发信人: sweetlin (小玲), 信区: Networking
标 题: GIS中拓扑软件和Overlay软件的研制(转载)
发信站: BBS 水木清华站 (Sun Jan 19 21:41:05 2003), 转信
GIS中拓扑软件和Overlay软件的研制
苏玉扬
摘要 概述了地理信息系统(GIS)中的矢量拓扑软件和分层叠加拓扑(Overlay)软件的
研制情况;介绍了拓扑软件中的矢量弧段的自动求交的原理和方法,以及弧段拓扑、节
点拓扑和多边形拓扑的情况;介绍了overlay软件中矢量拓扑和属性拓扑的原理和方法;
对两种弧段求交方法进行了比较,并对其比较结果进行了分析。
关键词 栅格化拓扑欠交悬挂仿射变换
Producing Software for Topology and Overlay in GIS
Su Yuyang
Abstract This paper summarize instance for producing Topology software and O
verlay software in GIS; Introduce principle and method for automatically int
ersect for vector Arc in Topology, and instance for Arc Topology,Node Topolo
gy and Polygon Topology; Introduce principle and method for vector Topology
and Attribute Topology in Overlay; Compare method intersecting for two kind
of Arc, and Analyze consequence.
Key words rastertopologyundershootovershootaffine transform
本文论述了地理信息系统中关键软件(拓扑软件和Overlay软件)的研制情况,对
两种求交方法进行了研究:一种是先将矢量数据栅格化,首先粗略求出两弧段在栅格图
上的交点(具有相同的格网),然后再根据矢量数据精确求出两弧段的交点;另一种方
法是直接通过对两两弧段进行比较求出交点。接着进行弧段拓扑和节点拓扑,找出每个
弧段的起末节点号,以及节点所对应的弧段数和弧段序号,对每个节点的弧段按方向(
节点与相邻点组成直线)排序。排序以x正轴为起始方向,逆时针方向。然后进行多边形
拓扑。多边形拓扑的原理为:每个弧段只能在相邻两个多边形中出现。
在矢量拓扑中对悬挂和欠交情况的处理。小于阈值的悬挂弧段(Overshoot)删除,离
某弧段的距离小于阈值的欠交弧段(undershoot)延长,使之相交;对于Overlay中属性数
据的拓扑,找出新多边形的属性与原有多边形属性的对应关系。介绍了如下三种Overla
y的情况:
点与多边形叠加拓扑;
线与多边形叠加拓扑;
多边形与多边形叠加拓扑。
1矢量弧段求交的原理和方法
在矢量拓扑和Overlay中都存在矢量弧段求交的问题,弧段数据结构如下:
点数据中的地址;
点数;
x坐标最小值;
y坐标最小值;
x坐标最大值;
y坐标最大值;
起节点号;
终节点号;
左多边形号;
右多边形号;
……
点坐标数据结构如下:
第一弧段X1,Y1X2,Y2……Xm,Ym
第二弧段X1′,Y1′X2′,Y2′……Xn′,Yn′
……
第n弧段X1″,Y1″X2″,Y2″……Xk″,Yk″
在矢量弧段信息数据结构中,前六项有具体值,后面的项暂时无值。而在Overlay中,
弧段信息中所有项都有确定值,而且有拓扑关系信息;多边形与弧段的索引关系和多边
形的
信息。多边形与弧段索引关系数据结构如下:
第一多边形弧段1弧段2…弧段m
第二多边形 弧段1′弧段2′…弧段n′
…
第n多边形弧段1″弧段2″…弧段k″
多边形数据结构如下:
在索引表中的地址;
弧段数;
在岛屿索引中的地址;
包含的岛屿数;
X方向的最小值;
Y方向的最小值;
X方向的最大值;
Y方向的最大值;
属性信息;
……
多边形中包含的岛屿数据结构如下:
第k个多边形岛屿1岛屿2…岛屿n
在对弧段求交之前,先对弧段中的点坐标进行处理:对弧段中相邻两点的距离小于阈值
的,删除一点;在只有两条弧段共有一个端点,且属性相同的弧段进行合并,合并为一
个弧段。在对弧段进行栅格化求交中,先对弧段进行栅格化处理,格网中的值是该格网
所含有的所有弧段的弧段号的一个集合,对于不含有弧段的格网,其值为一特殊数字。
在弧段求交时,先对弧段产生的格网值进行判断,只有格网中含有另一弧段的情况才可
能有交点。当新的弧段产生后,需要对格网中的值不断的更新,以增加新的弧段号,删
除已使用的弧段号,当一弧段被分成两弧段时,原弧段的首部分还保留原有弧段号,原
弧段的末部分的弧段号为原有的最大弧段号加1。
两弧段的矢量求交形式如图1。在图1(a)中,只有弧段1被分成两条弧段,而在图
1(b)中,弧段1和弧段2都被分成3条弧段。
图1
为了下面处理欠交和悬挂问题的方便以及拓扑的方便,对弧段的两端点的节点做上特别
标记,两端点都分别与其它的弧段共有节点,则记为3;只有一端点与其它弧段共有节点
的,如该端点为起节点,则记为1,如该端点为末节点,则记为2;两端点与别的弧段无
共有节点,则记为0。当一弧段求交后被分成两弧段,且原弧段的标记为3时,新的两条
弧段的标记都为3;当原弧段的标记为1时,属于原弧段的首部分的新弧段标记为3,另一
新弧段标记为1;当原弧段的标记为2时,属于原弧段的首部分的新弧段标记为2,另一新
弧段标记为3;当原弧段的标记为0时,属于原弧段的首部分的新弧段标记为2,另一新弧
段标记为1。对于新产生的弧段,需重新计算坐标范围。
对于两矢量弧段的求交,首先判断坐标范围,只有坐标范围有重叠的两弧段才可能
有交点。然后,对两弧段的每一个线段相互进行比较。同样,只有坐标范围有重叠且不
平行的两线段才有可能有交点。具体求交方法如下:先将一条线段置平,然后以同样的
角度将另一条线段旋转,旋转采用仿射变换。如图2,将弧段1置平,将弧段2按同样角度
进行旋转。旋转公式如下:
X′=AX+BY
Y′=-BX+AY
其中A=cosα,B=sinα,α为旋转角度。
图2
弧段2旋转后的两端点的坐标分别为(x1,y1),(x2,y2),坐标系平移到
线段1的起端点(即线段1的起端点为坐标原点)。
弧段2两端点变换后的Y坐标相乘大于零,表示无交点。
交点:X′=X1-Y1*X2-X2Y2-Y1
Y′=0
如果X′的坐标小于零或者X′大于弧段1的长度,则无交点。
然后,通过反变换公式再将坐标变换回来:
X=AX′-BY′
Y=BX′+AY′
再将坐标原点平移到以前状态。对弧段中端点标记不为3的情况,要进行欠交和悬挂处
理。如果弧段长度小于悬挂阈值,则删除该弧段;如弧段做延长处理,求被延长端点与
最近弧段的两端点的距离,如距离小于欠交阈值,则延长到最近弧段的端点,如大于欠
交阈值,则将延长线沿与最近弧段的垂直方向进行延长,延长线长度为欠交阈值,然后
再进行求交。如图3所示,若s1
图3
或s2小于欠交阈值,则延长到最近弧段的A端或B端,否则,沿s3方向延长欠交阈值
。对求交后的弧段进行判断,如果两条弧段重合,则删除其中一条弧段。
2拓扑的原理和方法
2.1节点拓扑的原理和方法
节点拓扑的原理为:找出所有端点位置为该节点位置的弧段,建立节点-弧段的对应
关系,并将该节点的所有弧段按方向排序,为多边形拓扑作准备。具体操作方法为:从
某一弧段中取一端点的坐标作为节点的坐标,然后从所有弧段中找出端点坐标为该节点
的位置的弧段,如弧段1,弧段2,…,弧段n,在弧段信息中加入起节点或末节点的节点
号。然后对节点中的弧段按方向排序,即以直角坐标的X方向作为起始方向,以逆时
针方向作为排序方向。如图4,每个弧段的方向以端点(节点)与紧相邻的一点组成的线
段作为弧段方向。
图4
2.2多边形拓扑的原理和方法
点与多边形的拓扑实际上是判断给定点落入某个多边形中,建立点与多边形的对应
关系,而线与多边形拓扑是在上面弧段求交后,判断某些弧段落入多边形中,建立弧段
与多边形的对应关系。以上两种拓扑较为简单,这里将重点介绍多边形拓扑的原理和方
法。根据上面弧段拓扑和节点拓扑,进行多边形拓扑。多边形拓扑的原理为:根据每个
弧段只能出现在两个多边形索引边中的规律,并假定多边形索引弧段以逆时针方向排序
。多边形拓扑的方法是:首先选一弧段,要求此弧段的标记为3,且弧段信息中起节点号
和末节点号有相应的节点号,找出此弧段末节点的点号,根据此节点找出多边形的下一
个弧段,该弧段的起节点号与前一弧段末节点号是同一个节点。如图5,假设弧段3为起
始弧段,它的多边形的下一弧段为弧段2(逆时针相邻弧段),依此规律不断地寻找,直
到某一弧段的末节点刚好为起始弧段的起节点为止,表明多边形的所有弧段已寻找完毕
,所找出的多边形已形成一闭合区域。对于找出的多边形弧段,作出被使用标志,如果
弧段被使用一次,记为1;如果弧段已使用两次,记为2,表示此弧段在多边形搜索过程
中,已使用完毕,在寻找以后的多边形中不再使用此弧段(跳过多边形弧段搜索)。如
果所有的多边形弧段在多边形搜索中被使用两次,表明此区域多边形搜索全部完毕。
图5
对已经做过多边形拓扑的区域,要进行狭长细小多边形的处理,处理方法是将狭长细小
多边形沿着长度较长的弧段并入相邻的多边形中。在多边形搜索过程中,有些多边形的
弧段是以顺时针方向排序的,如包括整个区域的多边形,区域中相对独立的斑块等等,
对这些弧段为顺时针排序的多边形,要进行删除处理,这就需要对多边形弧段的排序方
向进行判断。具体判断方法是:找出多边形中Y坐标最大的点,从此最大值前后找出相
邻两点。如图6,假设c 为Y坐标最大值的点,b和a为c的左右两点,且,Xa<Xc<X
b,如果多边形中坐标点的排列顺序为b,c,a,表明此多边形为逆时针方向排列,反
之,为顺时针方向排序。对两种特殊情况的处理,如图7,c为Y坐标最大值的点。图7
(a)中,Xa<Xc,Xb<Xc,图7(b)中Xa>Xc,Xb>Xc。假设图(a)中Xa>Xb,则
求出cb线段中坐标为Xa的b′点,如果Yb′<Ya,且多边形坐标排序方向为b,c,a,则
此多边形弧段排序方向为逆时针,反之为顺时针。如图(b)中情况,假定Xa>Xb,
则在ca线段中求出坐标为Xb的点a′; 假定Ya′>Yb,则在ca线段中求出坐标为Xb的点
a′,且多边形坐标排序方向为a,c,b,则此多边形弧段排序方向为逆时针,反之为顺
时针。
图6
图7
对于找出的多边形,建立多边形信息数据结构,建立多边形弧段索引信息。修改弧段信
息数据结构,增加左多边形信息和右多边形信息。
2.3属性拓扑的原理和方法
在多边形分层拓扑叠加(Overlay)中,需要知道Overlay前后的多边形属性信息之
间的关系:新多边形号层1多边形号层2多边形号……具体计算方法如下:从原有层中选
一多边形,搜索新层,如果某新层多边形的边界点落入原有层中,则表示新层中带有原
有层的信息。
3结论
通过在国务院综合国情地理信息系统(即9202工程)中使用小比例尺作拓扑和Over
lay,以及在新疆克拉玛依市地籍测量工程中的数千幅地籍图上作拓扑计算(大比例尺)
,得出如下结论:在弧段求交中,栅格化弧段进行求交的方法在整个区域弧段分布比较
均匀,且比较稠密的情况下,计算速度比较快,而直接矢量弧段求交在整个区域中弧段
分布极不均匀,且比较稀疏的情况下,计算速度比较快。
--
★★★★★★★★★★★★★★★★★★★★★
★ ☆个人ftp站点☆ ★
★ ftp://ftp.happylin.org/ ★
★ ftp://sweetlin.3322.org/ ★
★ /pub下提供最新代理,^_^ ★
★★★★★★★★★★★★★★★★★★★★★
※ 来源:·BBS 水木清华站 smth.edu.cn·[FROM: 166.111.168.86]
上一篇 返回上一页 回到目录 回到页首 下一篇
标 题: GIS中拓扑软件和Overlay软件的研制(转载)
发信站: BBS 水木清华站 (Sun Jan 19 21:41:05 2003), 转信
GIS中拓扑软件和Overlay软件的研制
苏玉扬
摘要 概述了地理信息系统(GIS)中的矢量拓扑软件和分层叠加拓扑(Overlay)软件的
研制情况;介绍了拓扑软件中的矢量弧段的自动求交的原理和方法,以及弧段拓扑、节
点拓扑和多边形拓扑的情况;介绍了overlay软件中矢量拓扑和属性拓扑的原理和方法;
对两种弧段求交方法进行了比较,并对其比较结果进行了分析。
关键词 栅格化拓扑欠交悬挂仿射变换
Producing Software for Topology and Overlay in GIS
Su Yuyang
Abstract This paper summarize instance for producing Topology software and O
verlay software in GIS; Introduce principle and method for automatically int
ersect for vector Arc in Topology, and instance for Arc Topology,Node Topolo
gy and Polygon Topology; Introduce principle and method for vector Topology
and Attribute Topology in Overlay; Compare method intersecting for two kind
of Arc, and Analyze consequence.
Key words rastertopologyundershootovershootaffine transform
本文论述了地理信息系统中关键软件(拓扑软件和Overlay软件)的研制情况,对
两种求交方法进行了研究:一种是先将矢量数据栅格化,首先粗略求出两弧段在栅格图
上的交点(具有相同的格网),然后再根据矢量数据精确求出两弧段的交点;另一种方
法是直接通过对两两弧段进行比较求出交点。接着进行弧段拓扑和节点拓扑,找出每个
弧段的起末节点号,以及节点所对应的弧段数和弧段序号,对每个节点的弧段按方向(
节点与相邻点组成直线)排序。排序以x正轴为起始方向,逆时针方向。然后进行多边形
拓扑。多边形拓扑的原理为:每个弧段只能在相邻两个多边形中出现。
在矢量拓扑中对悬挂和欠交情况的处理。小于阈值的悬挂弧段(Overshoot)删除,离
某弧段的距离小于阈值的欠交弧段(undershoot)延长,使之相交;对于Overlay中属性数
据的拓扑,找出新多边形的属性与原有多边形属性的对应关系。介绍了如下三种Overla
y的情况:
点与多边形叠加拓扑;
线与多边形叠加拓扑;
多边形与多边形叠加拓扑。
1矢量弧段求交的原理和方法
在矢量拓扑和Overlay中都存在矢量弧段求交的问题,弧段数据结构如下:
点数据中的地址;
点数;
x坐标最小值;
y坐标最小值;
x坐标最大值;
y坐标最大值;
起节点号;
终节点号;
左多边形号;
右多边形号;
……
点坐标数据结构如下:
第一弧段X1,Y1X2,Y2……Xm,Ym
第二弧段X1′,Y1′X2′,Y2′……Xn′,Yn′
……
第n弧段X1″,Y1″X2″,Y2″……Xk″,Yk″
在矢量弧段信息数据结构中,前六项有具体值,后面的项暂时无值。而在Overlay中,
弧段信息中所有项都有确定值,而且有拓扑关系信息;多边形与弧段的索引关系和多边
形的
信息。多边形与弧段索引关系数据结构如下:
第一多边形弧段1弧段2…弧段m
第二多边形 弧段1′弧段2′…弧段n′
…
第n多边形弧段1″弧段2″…弧段k″
多边形数据结构如下:
在索引表中的地址;
弧段数;
在岛屿索引中的地址;
包含的岛屿数;
X方向的最小值;
Y方向的最小值;
X方向的最大值;
Y方向的最大值;
属性信息;
……
多边形中包含的岛屿数据结构如下:
第k个多边形岛屿1岛屿2…岛屿n
在对弧段求交之前,先对弧段中的点坐标进行处理:对弧段中相邻两点的距离小于阈值
的,删除一点;在只有两条弧段共有一个端点,且属性相同的弧段进行合并,合并为一
个弧段。在对弧段进行栅格化求交中,先对弧段进行栅格化处理,格网中的值是该格网
所含有的所有弧段的弧段号的一个集合,对于不含有弧段的格网,其值为一特殊数字。
在弧段求交时,先对弧段产生的格网值进行判断,只有格网中含有另一弧段的情况才可
能有交点。当新的弧段产生后,需要对格网中的值不断的更新,以增加新的弧段号,删
除已使用的弧段号,当一弧段被分成两弧段时,原弧段的首部分还保留原有弧段号,原
弧段的末部分的弧段号为原有的最大弧段号加1。
两弧段的矢量求交形式如图1。在图1(a)中,只有弧段1被分成两条弧段,而在图
1(b)中,弧段1和弧段2都被分成3条弧段。
图1
为了下面处理欠交和悬挂问题的方便以及拓扑的方便,对弧段的两端点的节点做上特别
标记,两端点都分别与其它的弧段共有节点,则记为3;只有一端点与其它弧段共有节点
的,如该端点为起节点,则记为1,如该端点为末节点,则记为2;两端点与别的弧段无
共有节点,则记为0。当一弧段求交后被分成两弧段,且原弧段的标记为3时,新的两条
弧段的标记都为3;当原弧段的标记为1时,属于原弧段的首部分的新弧段标记为3,另一
新弧段标记为1;当原弧段的标记为2时,属于原弧段的首部分的新弧段标记为2,另一新
弧段标记为3;当原弧段的标记为0时,属于原弧段的首部分的新弧段标记为2,另一新弧
段标记为1。对于新产生的弧段,需重新计算坐标范围。
对于两矢量弧段的求交,首先判断坐标范围,只有坐标范围有重叠的两弧段才可能
有交点。然后,对两弧段的每一个线段相互进行比较。同样,只有坐标范围有重叠且不
平行的两线段才有可能有交点。具体求交方法如下:先将一条线段置平,然后以同样的
角度将另一条线段旋转,旋转采用仿射变换。如图2,将弧段1置平,将弧段2按同样角度
进行旋转。旋转公式如下:
X′=AX+BY
Y′=-BX+AY
其中A=cosα,B=sinα,α为旋转角度。
图2
弧段2旋转后的两端点的坐标分别为(x1,y1),(x2,y2),坐标系平移到
线段1的起端点(即线段1的起端点为坐标原点)。
弧段2两端点变换后的Y坐标相乘大于零,表示无交点。
交点:X′=X1-Y1*X2-X2Y2-Y1
Y′=0
如果X′的坐标小于零或者X′大于弧段1的长度,则无交点。
然后,通过反变换公式再将坐标变换回来:
X=AX′-BY′
Y=BX′+AY′
再将坐标原点平移到以前状态。对弧段中端点标记不为3的情况,要进行欠交和悬挂处
理。如果弧段长度小于悬挂阈值,则删除该弧段;如弧段做延长处理,求被延长端点与
最近弧段的两端点的距离,如距离小于欠交阈值,则延长到最近弧段的端点,如大于欠
交阈值,则将延长线沿与最近弧段的垂直方向进行延长,延长线长度为欠交阈值,然后
再进行求交。如图3所示,若s1
图3
或s2小于欠交阈值,则延长到最近弧段的A端或B端,否则,沿s3方向延长欠交阈值
。对求交后的弧段进行判断,如果两条弧段重合,则删除其中一条弧段。
2拓扑的原理和方法
2.1节点拓扑的原理和方法
节点拓扑的原理为:找出所有端点位置为该节点位置的弧段,建立节点-弧段的对应
关系,并将该节点的所有弧段按方向排序,为多边形拓扑作准备。具体操作方法为:从
某一弧段中取一端点的坐标作为节点的坐标,然后从所有弧段中找出端点坐标为该节点
的位置的弧段,如弧段1,弧段2,…,弧段n,在弧段信息中加入起节点或末节点的节点
号。然后对节点中的弧段按方向排序,即以直角坐标的X方向作为起始方向,以逆时
针方向作为排序方向。如图4,每个弧段的方向以端点(节点)与紧相邻的一点组成的线
段作为弧段方向。
图4
2.2多边形拓扑的原理和方法
点与多边形的拓扑实际上是判断给定点落入某个多边形中,建立点与多边形的对应
关系,而线与多边形拓扑是在上面弧段求交后,判断某些弧段落入多边形中,建立弧段
与多边形的对应关系。以上两种拓扑较为简单,这里将重点介绍多边形拓扑的原理和方
法。根据上面弧段拓扑和节点拓扑,进行多边形拓扑。多边形拓扑的原理为:根据每个
弧段只能出现在两个多边形索引边中的规律,并假定多边形索引弧段以逆时针方向排序
。多边形拓扑的方法是:首先选一弧段,要求此弧段的标记为3,且弧段信息中起节点号
和末节点号有相应的节点号,找出此弧段末节点的点号,根据此节点找出多边形的下一
个弧段,该弧段的起节点号与前一弧段末节点号是同一个节点。如图5,假设弧段3为起
始弧段,它的多边形的下一弧段为弧段2(逆时针相邻弧段),依此规律不断地寻找,直
到某一弧段的末节点刚好为起始弧段的起节点为止,表明多边形的所有弧段已寻找完毕
,所找出的多边形已形成一闭合区域。对于找出的多边形弧段,作出被使用标志,如果
弧段被使用一次,记为1;如果弧段已使用两次,记为2,表示此弧段在多边形搜索过程
中,已使用完毕,在寻找以后的多边形中不再使用此弧段(跳过多边形弧段搜索)。如
果所有的多边形弧段在多边形搜索中被使用两次,表明此区域多边形搜索全部完毕。
图5
对已经做过多边形拓扑的区域,要进行狭长细小多边形的处理,处理方法是将狭长细小
多边形沿着长度较长的弧段并入相邻的多边形中。在多边形搜索过程中,有些多边形的
弧段是以顺时针方向排序的,如包括整个区域的多边形,区域中相对独立的斑块等等,
对这些弧段为顺时针排序的多边形,要进行删除处理,这就需要对多边形弧段的排序方
向进行判断。具体判断方法是:找出多边形中Y坐标最大的点,从此最大值前后找出相
邻两点。如图6,假设c 为Y坐标最大值的点,b和a为c的左右两点,且,Xa<Xc<X
b,如果多边形中坐标点的排列顺序为b,c,a,表明此多边形为逆时针方向排列,反
之,为顺时针方向排序。对两种特殊情况的处理,如图7,c为Y坐标最大值的点。图7
(a)中,Xa<Xc,Xb<Xc,图7(b)中Xa>Xc,Xb>Xc。假设图(a)中Xa>Xb,则
求出cb线段中坐标为Xa的b′点,如果Yb′<Ya,且多边形坐标排序方向为b,c,a,则
此多边形弧段排序方向为逆时针,反之为顺时针。如图(b)中情况,假定Xa>Xb,
则在ca线段中求出坐标为Xb的点a′; 假定Ya′>Yb,则在ca线段中求出坐标为Xb的点
a′,且多边形坐标排序方向为a,c,b,则此多边形弧段排序方向为逆时针,反之为顺
时针。
图6
图7
对于找出的多边形,建立多边形信息数据结构,建立多边形弧段索引信息。修改弧段信
息数据结构,增加左多边形信息和右多边形信息。
2.3属性拓扑的原理和方法
在多边形分层拓扑叠加(Overlay)中,需要知道Overlay前后的多边形属性信息之
间的关系:新多边形号层1多边形号层2多边形号……具体计算方法如下:从原有层中选
一多边形,搜索新层,如果某新层多边形的边界点落入原有层中,则表示新层中带有原
有层的信息。
3结论
通过在国务院综合国情地理信息系统(即9202工程)中使用小比例尺作拓扑和Over
lay,以及在新疆克拉玛依市地籍测量工程中的数千幅地籍图上作拓扑计算(大比例尺)
,得出如下结论:在弧段求交中,栅格化弧段进行求交的方法在整个区域弧段分布比较
均匀,且比较稠密的情况下,计算速度比较快,而直接矢量弧段求交在整个区域中弧段
分布极不均匀,且比较稀疏的情况下,计算速度比较快。
--
★★★★★★★★★★★★★★★★★★★★★
★ ☆个人ftp站点☆ ★
★ ftp://ftp.happylin.org/ ★
★ ftp://sweetlin.3322.org/ ★
★ /pub下提供最新代理,^_^ ★
★★★★★★★★★★★★★★★★★★★★★
※ 来源:·BBS 水木清华站 smth.edu.cn·[FROM: 166.111.168.86]
上一篇 返回上一页 回到目录 回到页首 下一篇