02地图数据结构.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
02地图数据结构

多边形拓扑关系的建立 如果使用DIME或者类似的编码模型,多边形拓扑关系的表达需要描述以下实体之间的关系: 多边形的组成弧段; 弧段左右两侧的多边形,弧段两端的节点; 节点相连的弧段。 建立拓扑的算法如下: (1)得到第一条弧段A,并设置为当前弧段; (2)判断PL(A)和PR(A)是否为空。如果都非空,转到第一步,当所有弧段处理完毕后,算法结束; (3)如果左多边形为空,则创建一个新的多边形P,多边形的第一条弧段为当前弧段,并设置PL(A)=P,设置搜寻起始节点为Ns(A),搜寻当前节点为NE(A)。如果右多边形为空,则创建一个新的多边形P,多边形的第一条弧段为当前弧段,并设置PR(A)=P,设置搜寻起始节点N0=NE(A),搜寻当前节点NC=NS(A)。 (4)判断N0和NC是否相等,如果是,则多边形所有弧段都已经找到,转到第一步。 (5)检查与当前节点相连接的、已经排列好的弧段序列,将当前弧段的下一条弧段A作为多边形的第二条弧段。 (6)如果NC=NS(A),设置PL(A)=P,NC=NE(A);如果NC= NE(A),设置PR(A)=P,NC=NS(A),转到第四步。 如图2-4-c所示,如果从弧段4开始搜寻,找到节点C后,根据弧段的排序,下一条弧段是2;然后找到节点A,弧段1,整个搜寻结束,建立多边形I,其组成弧段为4、2、1。 按照这种算法,生成多边形的弧段从多边形内部看,是逆时针排列的。如果节点弧段排序为顺时针,则算法中用PL(A)代替PR(A),用PR(A)代替PL(A),生成的多边形弧段是顺时针排列的。 图2-5:带“岛”的多边形建立拓扑的结果 X1,Y1 X2,Y2 D、将求得的交点栅格化,并将其所在的栅格“赋值”。如图 II1=INT((Y0-Y1)/d) JJ1=INT((X1-X0)/d) II1JJ1 II2=INT((Y0-Y2)/d) JJ2=INT((X2-X0)/d) II2JJ2 Y中心线=Y0-II1*d-3/2*d Y中心线=Y0-II1*d-5/2*d Y中心线=Y0-II1*d-7/2*d 若行数差<列数差,则逐列求出本列中心线与已知直线的交点坐标: 将求得的交点栅格化,并将其所在的栅格“赋值”。 X1,y1 X2,y2 这里,之所以要分两种情况处理,是为了使产生的被“赋值的栅格相互连通,避免出现间断现象 具体编程思路如下 开始 直线两端点栅格化 II1=[(Y0-Y1)/d];JJ1=[(X0-X1)/d] II2=[(Y0-Y2)/d];JJ2=[(X0-X2)/d] 计算两端点的行数差和列数差 行数差R=II2-II1;列数差C=JJ2-JJ1 Y=Y1+(X-X1)*(Y2-Y1)/(X2-X1) 建立直线方程: R≥C? Y N 逐行处理 逐列处理 扫描线开始扫描,当K=1时,为第一条扫描线 其方程为: 逐列扫描 X=XC=X0+JJ1*d+3/2*d k≤JJ2-JJ1-1? 结束 N Y 求当前扫描线的直线方程:X=XC 求扫描线与直线的交点坐标:X=XC; Y=Y1+(XC-X1)*(Y2-Y1)/(X2-X1) 对交点进行栅格化:II=[(Y0-Y)/d];JJ=[(X-X0)/d] 递进扫描:K=K+1;XC=XC+d 扫描线开始扫描,当K=1时,为第一条扫描线 其方程为: 逐行扫描 Y=YC=Y0-II1*d-3/2*d k≤II2-II1-1? 结束 N Y 求当前扫描线的直线方程:Y=YC 求扫描线与直线的交点坐标:Y=YC; X=X1+(YC-Y1)*(X2-X1)/(Y2-Y1) 对交点进行栅格化:II=[(Y0-Y)/d];JJ=[(X-X0)/d] 递进扫描:K=K+1;YC=YC-d 3、面的栅格化 面域的栅格化可分以下几步进行: 第一步 将面域的边界栅格化用前面介绍的线段栅格化的方法对组成面域的每条边进行栅格化,如图: R R N R R R N R N N N R N N N L N N R N R N N N N N N N N N N N N L L N L L L L L 第二步 对各个栅格像元加标记 上升像元标上“L”,下降像元被标上“R”,平坦处或升降变换处的像元被标上“N”,为了反映面域的拓扑关系,可约定,面域的外廓按顺时针方向组织数据,内廓按逆时针方向组织数据。 第三步 配对填充 逐行扫描栅格数据,从左到右,将每行中的L和R配对,并在每对L-R之间填上代表该多边形面域的特定色度值。在配对时,可不顾“N”的存在,但在配对填充结束后,应将剩余的N或R(L)置换成面域灰度值。 L L L L L N L L N N N N N N N N R N R N N N N N N

文档评论(0)

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

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

1亿VIP精品文档

相关文档