多边形的自动生成实质上是根据分割好的各弧段及拟合匹配的结点信息,搜索组成每个多边形的各弧段,自动建立多边形的拓扑关系。搜索多边形的方式可以是顺时针,也可以是逆时针方向。
下面以逆时针左旋法为例说明多边形的自动生成过程。搜索过程实质上是从一个弧段出发,逆时针前进,寻找该弧段的后续弧段的过程。这样不断前进搜索,直到回到起始弧为止。由于每个结点上往往汇集很多弧段,弧段搜索时需求出汇集于每个结点上的弧段的方向角。以图3-25为例,其算法如下:
1.取多边形中的一条弧作为起始弧去寻找其后续弧,如沿a1弧搜索找到结点N1。
2.从结点文件找出同N1相连的弧a1,a2,a3,a4,分别算出这些弧在N1点上同x轴的正向夹角。设N1的坐标点为(x0,y0),同N1点相连的各弧段上的临近N1点上取坐标点分别为(xk,yk),其方向角分别为ak。方向角的求解可见图3-25归纳如下:
当△x≠0时,方向角为:
△x=|xk-x0|
△y=|yk-y0|
k=1,2,3,…,n,n为结点上要搜索的弧段数。
当△x=0时,方向角可以简化为:
3.求出搜索结点的起始弧段同该结点上其它弧段之间方向角差,称偏差角△ak。
△ak=a0-ak k=1,2……n-1;
a0为起始弧的方向角;
ak为第k个弧的方向角。
4.确定后续弧
1)若起始弧为最小方向角弧,则后续弧为对应于最大方向角的弧。如起始弧为a1,则后续弧为a4。因为a1-a2,a1-a3,a1-a4均为负偏差角。
2)若起始弧为非最小方向角弧,则后续弧为最小正偏差角所对应的弧。
若起始弧为a2,则后续弧为a1,因为只有a2-a1>0为正偏差角;
若起始弧为a3,则后续弧为a2,因为a3-a2<a3-a1;
若起始弧为a4,则后续弧为a3,因为a4-a3<a4-a2<a4-a1,后续弧段应是最小正偏差角所对应的弧段。
5.继续上述过程,不断搜索组成多边形的弧段,直到全部多边形搜索完为止,得到逆时针方向组成的每个多边形的各弧段,从而实现了多边形的自动生成。
本文标题:矢量数据及其编码(5)
手机页面:http://m.dljs.net/dlsk/gisjiao/10644.html
本文地址:http://www.dljs.net/dlsk/gisjiao/10644.html