空间数据组织算法.ppt

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 3.4建立拓扑关系 (1)计算结点关联弧段的方位角,并按由小到大排序 (2)左转算法 (3)岛的判断 * (1)计算结点关联弧段的方位角 每个结点都关联有若干条弧段,结点或者为弧段的头结点或者为弧段的尾结点,设结点为N,则弧段的方位角定义为:结点N与弧段上与其最接近结点V的连线与X轴的正向夹角。 * (1)计算结点关联弧段的方位角 设结点N的坐标为(x0,y0 ),节点v的坐标为(x1,y1),则有:dx=x1-x0,dy=y1-y0,那么有 当dx=0时: 计算出结点N所关联的弧段的方位角后,按角的大小将这些弧排序,形成排序的关联弧段集合。 * (2)左转算法 算法基本思想:从组成多边形边界的某一条弧段开始,如果该弧段的方向角最小或介于同一结点的其他弧段方向角之间,则逆时针方向寻找最小夹角偏差所对应的弧段为多边形的后续弧段;如果该弧段与X轴正向夹角为最大,则从该弧段的同一结点出发的其他弧段中,方向角最小的弧段是该多边形的后续弧段。 * (2)左转算法 算法描述如下: (1)顺序取一个结点作为起始结点,取完为止;取过该结点的方位角最小的未使用过的或仅使用过一次,且使用过的方向与本次相反的弧段作为起始弧段。 (2)取这条弧段的另一个结点,找这个结点关联的弧段集合中的本条弧段的下一条弧段,如果条弧段是最后一条弧段,则取弧段集合的第一条弧段,作为下一条弧段。 * (2)左转算法 (3)判断是否回到起点,如果是,则形成了一个多边形,记录下它,并且根据弧段的方向,设置组成该多边形的左右多边形信息;否则转(2)。 (4)取起始点上开始的,刚才所形成多边形的最后一条边作为新的起始弧段, 转(2);若这条弧段已经使用过两次,即形成了两个多边形,转(1)。 在构建多边形时要注意悬挂结点和悬挂线的标识,一般可以采用栈的形式处理。 * (2)左转算法 (1)从N1结点开始,选择具有最小方位角的弧段N1N2作为起始弧段;转入N2点,根据左转算法选择N2N5弧段,转入N5结点选择N5N1弧段,形成多边形A1,设置组成多边形A1的弧段的左右多边形信息。 (2)A1的结束弧段为N5N1,选N1作为起始点,N1N5作为起始弧段,根据左转算法,形成多边形A2,设置左右多边形信息。 * (2)左转算法 (3)A2的结束弧段为N4N1,选N1作为起始点,N1N4作为起始弧段,根据 、左转算法,形成多边形A3,这个多边形的方向是逆时针方向,对于逆时针方向的多边形,不设置左右多边形信息。 * (2)左转算法 (4)A3的结束弧段为N2N1, N1N2已经被使用过两次,所以选取下一个结点N2作为起始结点。从N2结点开始,具有最小方位角的弧段是N2N1,但N2N1已经被使用两次,不选; 继续选取下一条弧段N2N5;然而上一次该弧段的访问方向与本次相同,所以也不选;继续选取下一条弧段N2N3作为起始弧段,形成多边形A4。 (5)依照此规则形成多边形A5,即完成了图5.24的拓扑构建,共可形成A1、 A2、A3、A4、A5五个多边形。 * (3)岛的判断 岛的判断是指找出多边形互相包含的情况,即寻找复杂多边形。找到岛后才可以完成多边形的拓扑关系的建立。 根据左转算法,由单条弧段或多条弧段顺序构成的且不与其他多边形相交的多边形即单多边形会被追踪两次,形成两个多边形,一个多边形节点方向是顺时针的,另一个多边形的节点方向是逆时针的,如果一个多边形包含另一个多边形,则必然是顺时针多边形包含逆时针多边形。 * (3)岛的判断 岛的判断决定于多边形节点的顺序问题,多边形节点的顺序问题可以 通过计算多边形的面积加以解决。任意多边形的面积可以通过积分来解决,设多边形的节点坐标串为(x1,y1),(x2,y2),…,(xn,yn),那么多边形的面积可以表示为 式中,△x=xi+1-xi。所以多边形的面积可以表示为: 当多边形由顺时针方向构成时,面积为正;否则,面积为负。 * (3)岛的判断 岛的判断问题的算法如下: (1)计算所有多边形的面积。 (2)分别对面积为正的多边形和面积为负的多边形排序,分别形成正多边形和负多边形集合。 (3)如果负多边形集合的个数为1,结束程序;否则,从面积为正的多边形集合中,顺序取出一个多边形,如果正多边形巳经都被访问过,则程序结束。 * (3)岛的判断 (4)依次从负多边形集合中取出负多边形,判断当前取出的正多边形是否包含该负多边形,如果包含,就将该负多边形加入当前取出的正多边形中,形成复杂多边形,设置负多边形的组成弧段的拓扑信息,并从负多边形集合中删除该负多边形。当所有负多边形都被访问一遍后转(3)。 * (3)岛的判断 上述算法中,判断负多边形是否被正多边形包含是关键,具体的算法为: (1)判断负多边形面积的

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档