GIS拓扑关系编程报告.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
GIS拓扑关系编程报告

编程报告编程名称:拓扑生成班级:测绘学院学号:姓名:题目:根据结点_弧表,和弧_结点表,求出多边形_弧表,和弧面表。如图所示:二.程序设计1.流程图编辑弧_结点,结点_弧的txt文件读取文件输出文件拓扑生成2.拓扑生成算法算法步骤: (1)得到第一条弧段A,并设置为当前弧段;(2)判断PL(A)和PR(A)是否为空。如果都非空,转到第一步,当所有弧段处理完毕后,算法结束;(3)如果左多边形为空,则创建一个新的多边形P,多边形的第一条弧段为当前弧段,并设置PL(A)=P,设置搜寻起始节点为N0=Ns(A),搜寻当前节点为NC=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),转到第四步。三.主要代码1.文件读取void CTuopuDlg::GetherData()//读取文件{ UpdateData(); int i; ifstream if1(m_sPathName1); point=new Point[4]; for(i=0;i4;i++) { if1point[i].ppoint[i].po1point[i].po2point[i].po3; } ifstream if2(m_sPathName2); arc=new arArc[6]; for(i=0;i6;i++) { if2arc[i].aarc[i].Nsarc[i].Ne; arc[i].Pl=arc[i].Pr=0; } }2.拓扑生成void CTuopuDlg::OnButtonRun() {// TODO: Add your control notification handler code here UpdateData(); GetherData(); int i,j,Sc,S; CString datas1[1],datas2[1]; CString str; char No[20]; char Nc[20]; stp=new structp[6]; int num=0; for(S=1;S=6;S++) { Sc=S; if(arc[Sc-1].Pl!=0arc[Sc-1].Pr!=0) continue; if(arc[Sc-1].Pl==0) { num++; stp[S-1].arP.RemoveAll(); stp[S-1].arP.Add(Sc); arc[Sc-1].Pl=num; strcpy(No,arc[Sc-1].Ns); strcpy(Nc,arc[Sc-1].Ne); step1:if(!strcmp(No,Nc)) continue; else { i=0; while(i4) { if(!strcmp(Nc,point[i].p)) { if(Sc==point[i].po3) Sc=point[i].po1; else if (Sc==point[i].po1) Sc=point[i].po2; else Sc=point[i].po3; i=4; } i++; } stp[S-1].arP.Add(Sc); i=0; if(!strcmp(Nc,arc[Sc-1].Ns)) { arc[Sc-1].Pl=num; strcpy(Nc,arc[Sc-1].Ne); i=1; } if(i==0(!strcmp(Nc,arc[Sc-1].Ne))) { arc[Sc-1].Pr=num; strcpy(Nc,arc[Sc-1].Ns); }

文档评论(0)

xjj2017 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档