计算机地图制图实习报告及计算机程序设计基础课程设计报告_第1页
计算机地图制图实习报告及计算机程序设计基础课程设计报告_第2页
计算机地图制图实习报告及计算机程序设计基础课程设计报告_第3页
计算机地图制图实习报告及计算机程序设计基础课程设计报告_第4页
计算机地图制图实习报告及计算机程序设计基础课程设计报告_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE1-计算机地图制图实习(论文)报告交通学院地理信息系统专业学期第1学期学号学生姓名实习日期资料的准备与处理地图底图资料选用海口市市区图作为地图底图资料,该图幅采用1954年北京坐标系和1956年黄海高程系,比例尺为1:3万。注:在拿到的原图上就没有海口地区的西海岸部分,因此那部分不作为此次制图的制图范围。音频资料从网上下载了地图浏览系统的背景音乐:《请到天涯海角来》文字资料海口市主要企、事业单位,地名,公共交通,旅游景点及学校等各方面的信息介绍2.引用文件 (1)国家测绘局2003年颁布的《公开地图内容表示若干规定》 (2)国家测绘局2009年颁布的《公开地图内容表示补充规定(试行)》的通知 (3)《公开版地图质量评定标准》(GB/T19996-2005) (4)《测绘管理工作国家秘密范围的规定》(国测办字[2003]17号)3.计算机地图制图作业方案及地理要素图层设置 3.1.计算机地图制图作业方案对海口市市区的纸质地图进行扫描,得到TIFF格式的文件。通过用MapGis对扫描地图的矢量化后,转到ArcGis格式进行图层的分离,把对于交通旅游有重要指示作用的学校、饭店宾馆、重要企、事业单位和旅游景区独立出来,然后在电子地图中制作时加入图层的独立显示功能。用户可以对最终的成品进行选择操作,自由查看所需查找的独立地物所在位置。譬如,选择查看海口市学校的分布情况,则电子地图上只把学校的点状地物显示出来便于用户查看。最终成果设计图如下。界面缩小还原医院旅游景点帮助学校背景音乐界面缩小还原医院旅游景点帮助学校背景音乐 3.2.地理要素图层设置因为此次制作的电子地图为海口市的交通旅游图,所以在设置图层时重点把道路分为高速公路、主要道路、次要道路和一般道路四种,同时把双线河流也作为一个图层独立出来。这些作为线状地物的主要部分来进行矢量化,力求精度越高越好。而在点状地物中,把学校、旅游景点、饭店宾馆和重要企、事业单位独立分层,因为考虑到在交通旅游时,这些地物对于方向和目标有着重要的指示作用。4.主要作业过程 4.1.地图的扫描处理纸质地图是扫描数字化较常用的介质,虽然图纸在储存过程中受空气和水分的影响变形较大,但一般伸缩变形有一定规律,通过图像纠正可以减小变形,但需要扫描的地图不能有褶皱或明显的变形。扫描时,将图纸平放在扫描仪的操作平台上,保存图纸平整,双手轻轻地将地图推进滚筒中,等扫描仪的滚筒卡住图纸后,点击点脑上的“扫描”按钮,扫描仪就自动的将纸质地图扫描成以像素信息存储的栅格数据结构信息。扫描仪分平台式扫描仪、滚筒式扫描仪和手持式扫描仪,扫描地图使用的是滚筒式扫描仪。扫描仪的技术指标主要包括分辨率、灰度级、色彩数、扫描速度、扫描幅面。其中分辨率是扫描仪最重要的技术指标,也是选择扫描仪时最应该考虑的因素,它表示扫描仪对图像细节上的表现能力,即决定了扫描仪所记录图像的细致度。在作业安排下来后,我和我的组员唐逢幸两人决定对海口市进行交通旅游地图的制作。于是我们在网上买了海口市的市区图,但由于物流的原因致使我们的作业进度拖延了一天,然后因为等待扫描安排又拖延了一天,时间变得有点紧张。最后终于在星期四的上午拿到地图扫描数据文件。 4.2.地图的矢量化处理 地图的矢量化处理是通过MapGis软件进行的。MapGIS是中地数码集团的产品名称,是中国具有完全自主知识版权的地理信息系统,是全球唯一的搭建式GIS数据中心集成开发平台,实现遥感处理与GIS完全融合,支持空中、地上、地表、地下全空间真三维一体化的GIS开发平台。MapGis系统采用面向服务的设计思想、多层体系结构,实现了面向空间实体及其关系的数据组织、高效海量空间数据的存储与索引、大尺度多维动态空间信息数据库、三维实体建模和分析,具有TB级空间数据处理能力、可以支持局域和广域网络环境下空间数据的分布式计算、支持分布式空间信息分发与共享、网络化空间信息服务,能够支持海量、分布式的国家空间基础设施建设。(引用:MapGis百度百科)我们两人在这部分工作中进行了分工,把地图分为东西两部分。我负责对东边线状地物部分和整体海岸线的矢量化,唐逢幸负责西边所有部分和东边点状部分的矢量化。这样分工的原因是,东边线状部分内容较多,而我对于线编辑比较熟悉,所以把这部分交给我。而唐逢幸比较耐心,并且他作为一个海口人对海口地区的点状地物十分熟悉,所以把所有的点编辑交给他。这样的分工充分考虑到了我们两人的优缺点,在矢量化这部分工作中起到了优势互补的作用。打开MapGis软件的图形编辑区块,创建点文件、线文件、区文件和工程,装入扫描地图后生成的TIFF文件,选择要编辑的图层,开始矢量化。在画道路时,老师要求我们用双线线形,这样所得的道路两边始终是平行的,并且在交叉口可以自动相交联通,十分方便。只是双线的线编辑在面对弯曲的道路时很难操作,经常在某个拐角处出现线段的交叉和配准失误。我在这种情况下,会使用F9的退点功能来反复定点,并在弯道处多处定点以求定位精准。当然误差总是难免的,在回头发现线段出现交叉而线编辑已经进行到前方很远,整体删掉肯定会使效率下降的情况下,只能勾选参数设置中的坐标点可见,然后通过线上删点等一系列操作来纠正误差。 4.3.格式转换打开MapGis的文件转换功能,装入矢量化后生成的点文件、线文件和区文件,输出成dxf格式的文件。这是可以在ArcGis中打开和操作的中间过渡文件,便于之后的图层分离保存。 4.4.图层分离保存 这部分操作利用ArcGis软件实现。 ArcGIS产品线为用户提供一个可伸缩的,全面的GIS平台。ArcObjects包含了大量的可编程组件,从细粒度的对象(例如,单个的几何对象)到粗粒度的对象(例如与现有ArcMap文档交互的地图对象)涉及面极广,这些对象为开发者集成了全面的GIS功能。每一个使用ArcObjects建成的ArcGIS产品都为开发者提供了一个应用开发的容器,包括桌面GIS(ArcGISDesktop),嵌入式GIS(ArcGISEngine)以及服务端GIS(ArcGISServer)。(引用:ArcGis百度百科)用ArcGis打开之前格式转换得到的dxf文件,可以看到在Grouplayer下有Annotation、Point、Polyline、Polygon和MultiPatch这些子文件。除了Point外,其他子文件前的勾选取消掉,然后右键选择Point的属性,在绘制图层选项页中勾选想要独立显示的图层。之后再进行数据输出,就可以得到一个独立的图幅。用这种方法我得到了学校、医院、旅游景点等专题图幅。 4.5.程序编写在之前的矢量化阶段,我负责的部分工作量不大,因此我承担了程序编写这部分的大部分工作。制作电子地图的浏览系统可以通过VB+MO的方式,也可以通过ArcGisengine的方式进行。由于VB+MO的方法简单易用,再加上我们组已经浪费了很多时间的原因,我采用了这种方式进行制作。VB并非我们学过的编程工具,在一开始编写程序时我是一边上网看教程一边尝试运用,中间当然会出现这样或那样的问题。譬如,在选择独立显示“医院”这一地物后,再点击选择独立显示“学校”,除了道路外地图会变成一片空白。这是因为在编程时,采用的是图层隐藏的方法把除了“医院”外的所有点状地物图层隐藏起来。这样在之后点击选择独立显示“学校”时又把“医院”这一图层给隐藏了,所以地图会变成一片空白。通过一番思考,决定在“还原”功能里加上重置所有图层显示的部分,然后每次点击“医院”前自动调用“还原”功能一次。这样终于解决了问题。程序出现问题是正常的,重要的是如何解决,幸好通过不断努力,最终的成品总算达到了预期想要达到的效果。并且在最后还加上了一点小创意用MMControl控件播放背景音乐,曲目是海南精典歌曲《请到天涯海角来》。 4.6.程序调试在程序完成后,我多次打开程序查看使用效果,总体来说并无太大问题。但又一次发现独立显示“旅欧景点”时,地图上的注释字体颜色太浅,不容易看清楚。这是由于每次使用程序时,图层是自动加载的,图层颜色也是随机显示的,这说明有可能会出现以上这种字体颜色太浅的问题。于是我又在代码中明确设定了各个图层的颜色,这样每次使用时看到的地图都是一样的效果,不会存在偶然性错误。5.地图制图质量控制及地图输出5.1.地图制图质量控制地图制图质量控制一直贯穿于整个项目,在扫描地图时,为了防止扫描过程中出现的瑕疵在当下没有被发现,刻意地多扫描了几份,在其中选择最为完美的一幅进行下部分的操作。在矢量化阶段明确图层分化,严格按图层划分来描绘地物。并且在具体操作过程中务求定位准确,尽量避免最后矢量化成果与扫描原图有过大差异。在最后的程序编写部分,为了防止出现在用户电脑上无法运用的问题,多次把半成品搬到别人电脑上打开,试验功能是否可以实现。 5.2.地图输出 最终成果:海口市地图浏览系统一个6.实习结论和心得体会 6.1.实习结论经过为期两周的实习,通过MAPGIS、ARCGIS和VB的运用,最终制作出海口市电子地图一份。在这个过程中,我再次温习了MAPGIS的矢量化操作和ARCGIS的图层分离保存操作,学习了VB+MO方式对GIS进行二次开发的步骤。在格式转换到ARCGIS中时,发现用ARCGIS9不能读取dxf文件中的注释部分,只能用ARCGIS10才可以读取。在用VB+MO制作地图浏览程序时发现,可以读取直接用点文件和线文件转成的shapefile格式的地图,但无法读取注释部分,并且无法独立显示特定地物,证明转到ARCGIS中进行图层分离保存的操作无法省略。 6.2.心得体会实习虽然只有短短的两周,我感觉在这期间学到了很多东西,第一次使用扫描仪,我自己动手扫描了多张地图,掌握了扫描仪的简单使用。通过实习熟悉了MAPGIS软件的使用,学会了更多的矢量化操作技巧。在矢量化时,碰到立交桥这种弯曲交叉的道路时,由于操作上的失误致使线段的交错连接,而因为线段太过靠近使得相互压盖不好处理。幸好老师教我在参数设置中勾选坐标点可见,使得线型变得十分细小而且上面的定位点也清晰可见,之后再对此进行操作就变得非常容易。同时,我在期间也学习到了VB+MO的编程方法和多个控件的运用方式(虽然不是每个都用到制作的程序上)。在编程阶段,无法解决音频文件与程序的匹配问题时,上网搜索解决方法,百般寻找和试验,终于找到一行与老师案例差不多的代码,成功达到了预期的效果。因为这不是老师要求的功能而是我自己的创意,所以在解决过程中要靠自己去动脑动手,这提高了我发现问题、解决问题的能力,不再一味依靠老师的帮助。在实习的起始,老师给我们选择自己喜欢做的项目,觉得工作量较大也可以几个人组队一起完成。这种方式十分自由,而且容易激发我们的兴趣。譬如我自己,就选择制作了家乡海南的省府—海口市的交通旅游图,无论是在矢量化还是制作电子地图浏览系统时,看到自己熟悉的一切都会觉得很高兴很有动力。在和组员分工合作,一起解决遇到的各种问题时,体会到了团结协作的重要性。对于已经大三的我们越来越觉得实践的重要性,能把课堂学到的知识在实习中实践一遍是一种很好的掌握知识的过程,在这个过程中我们不仅能学到专业知识,还能增强团队合作意识,学习绘图工作中需要的细心与认真。在以后的时间中,学校可以多安排几次实习来增强大家的实践动手能力。吉首大学计算机程序设计基础课程设计报告学院:城乡资源与规划学院专业:城市规划班级:级学号:姓名:课题:C课程设计指导教师:报告成绩:日期:目录TOC\o"1-2"\h\z\u1、课程设计题目 32、课程设计要求 33、设计题目分析 33.1题目简介 33.2设计要求 34、课程设计内容 34.1总体设计 34.2详细设计 44.3调试和测试 75、设计心得与总结 76、建议 87、附件: 9

1、课程设计题目建立一个班级(20个学生)的学生情况表(采用链表),每个学生的数据包括学号、姓名、性别和二门课的成绩。2、课程设计要求1、要求按规定的时间完成;2、要求按照题目的要求完成程序的编写,且排版合理,整体整齐,并用C++6.0运行;3、设计报告要求格式正确,要素完整,层次清楚,思路清晰,文字流畅。3、设计题目分析3.1题目简介在学习大学计算机链表之后,为了更加熟练的运用之前所学的计算机技能,更好的锻炼同学们的计算机编程和操作能力,在经过这次课程设计后,可以充分的了解到同学们的计算机能力。因此,特开展此次课程设计。3.2设计要求在建立的程序中,要求建立一个主函数和一个菜单函数,主函数要求包含:链表的建立,链表的插入,链表的删除,链表的输出和链表的查找等。4、课程设计内容4.1总体设计(系统总体设计框架、系统功能模块图)主函数主函数创建函数输出函数菜单函数插入函数删除函数查询函数4.2详细设计(主要功能模块的算法设计思路、工作流程图)主函数:菜单函数:链表的创建:链表的输出:链表的查找:链表的删除:链表的插入:4.3调试和测试(程序调试过程、数据测试结果分析,测试过程中遇到的主要问题以及采取的解决措施)刚开始拿到这个题目时,经过老师的简单介绍,对其有一点点了解,于是把所需的函数输入了程序,然后再对相应的变量进行修改。试着运行,但是发现这样的困难较大,于是把函数分开来,一个一个的改,一个个的做,直到每个函数都符合要求之后,再整体的合在一起,再试着运行,发现还是有问题,于是对主函数进行修改,以及菜单函数进行修改,最后都可以运行时,再输入数据,验证程序的可行性。有问题,再继续修改,反复多次,并询问老师,最后确定函数。最后结合做出的程序,再进行一定的调试,让它更方便使用和更容易被使用。5、设计心得与总结(课程设计过程中的学习体会和收获,对C语言和本次课程设计的认识)在这次课程设计中,我明白了,对于这种由多个函数组成的综合性程序,为了更好更快的达到想要的结果,可以先对分函数进行符合要求的调整,再把所有的函数整合起来进行调整,修改主函数、菜单函数。这样由总到分再到总的做法,可以清晰明了的找出错误点和需修改点。还有一点就是,再做课程设计时,不能孤立自己的去完成,而是在不懂的时候主动找老师同学们进行咨询,再把东西转为自己的东西,这样才能提高自己的动手设计程序的水平,经过老师和同学的共同协作,才能更好的完成课程设计。经过这次的课程设计,大大的提高了我的动手能力,和读程序的能力,让我更好的掌握了这门课程。同时,也让我看到了自己的很多不足之处,例如:程序的输入速度和准确度;对程序的认识度;对程序函数的运用度等,都需要很大的提高。6、建议

7、附件:#include<stdio.h>#include<stdlib.h>#include<conio.h>structstudent{charname[20];longintnum;intscore1,score2;charsex;structstudent*next;};intn;longnum;structstudent*head=NULL,*stu;structstudent*creat(){structstudent*head,*p,*q;n=0;head=NULL;p=q=(structstudent*)malloc(sizeof(structstudent));do{ printf("enterdate(input0forend):\n");printf("pleaseinputStudentnum:");scanf("%ld%*c",&p->num);if(0==p->num)break;printf("pleaseinputStudentname:");scanf("%s",&p->name);printf("pleaseinputStudentscore1:");scanf("%d",&p->score1);printf("pleaseinputStudentscore2:");scanf("%d",&p->score2);printf("pleaseinputStudentsex(m/w):");scanf("%*c%c%*c",&p->sex); n++;if(n==1){head=p;head->next=NULL;}elseq->next=p;q=p;p=(structstudent*)malloc(sizeof(structstudent));}while(p->num!=0);q->next=NULL;return(head);}structstudent*insert(structstudent*head){structstudent*p0,*p1,*p2;structstudent*stud=(structstudent*)malloc(sizeof(structstudent));printf("pleaseinputStudentnum:");scanf("%ld%*c",&stud->num);printf("pleaseinputStudentname:");scanf("%s",&stud->name);printf("pleaseinputStudentscore1:");scanf("%d",&stud->score1);printf("pleaseinputStudentscore2:");scanf("%d",&stud->score2);printf("pleaseinputStudentsex(m/w):");scanf("%*c%c%*c",&stud->sex);p0=head;while(p0->next){p0=p0->next;}p0->next=stud;stud->next=NULL;returnhead;}structstudent*delete(structstudent*head,longnum){structstudent*p1,*p2;if(head==NULL){printf("\nlistnull!\n");returnNULL;}p1=head;while(num!=p1->num&&p1->next!=NULL){p2=p1;p1=p1->next;}if(num==p1->num){if(p1==head)head=p1->next;elsep2->next=p1->next;printf("delete:%ld\n",num);free(p1);n--;}elseprintf("%ldnotbeenfound!\n",num);return(head);}voidprint(structstudent*head){structstudent*p;p=head;if(head!=NULL){ printf("\n\n|StudentNum||StudentName||Score1||Score2||sex|\n");do{printf("|%11ld||%12s||%6d||%6d||%c|\n",p->num,p->name,p->score1,p->score2,p->sex);p=p->next;}while(p!=NULL);}elseprintf("thisisaNULLlist");}structstudent*find(structstudent*head,longnum){structstudent*p1,*p2;if(head==NULL){printf("\nlistnull!\n");returnNULL;}p1=head;while(p1!=NULL&&p1->num!=num){p1=p1->next;}if(p1!=NULL){printf("Find:"); printf("StuNum:%ld\nStuname:%s\nStusco1:%d\nStusco2:%d\nStusex:%c\n",p1->num,p1->name,p1->score1,p1->score2,p1->sex);}elseprintf("%ldnotbeenfound!\n",num);return(head);}intmain(){structstudent*stud;intmenu();while(1){switch(menu()){case1:head=creat();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论