您好,欢迎访问三七文档
GIS暑期实习1《GIS暑期实习》课程实习报告姓名:学号:专业:地球信息科学与技术教师:2017年6月GIS暑期实习2目录《GIS暑期实习》课程实习报告................................................................................1第一部分GIS开发基础.............................................................................................41.1实习概要.........................................................................................................41.2思路及结果......................................................................................................41.2.1点、线、面的读取......................................................................................41.2.2点、线、面的显示......................................................................................41.2.3主要功能....................................................................................................51.2.4结果..........................................................................................................5第二部分Mo二次开发..............................................................................................72.1实习概要.........................................................................................................72.2概述与结果.......................................................................................................7第三部分GIS系统的设计与实现.............................................................................8基于MO的公交换乘系统.......................................................................................83.1引言................................................................................................................83.2数据................................................................................................................93.3方法..............................................................................................................103.4结果..............................................................................................................103.5总结..............................................................................................................11GIS暑期实习33.6参考文献.......................................................................................................11附录(精选代码)...................................................................................................121.读取点状目标....................................................................................................122.读取线状目标....................................................................................................123.读取面状目标..................................................................................................144.显示点、线、面.................................................................................................165.线、面缓冲区....................................................................................................206.音乐播放...........................................................................................................237.gif显示..............................................................................................................23GIS暑期实习4第一部分GIS开发基础1.1实习概要(1)按照Shape白皮书对于shape格式的介绍,从shape文件中读取空间数据。并按照空间数据的特点,自己规定一种二进制格式存储所读取的shape文件。(2)按照SFF模型对于空间对象的定义,用面向对象的编程语言,实现GIS空间数据结构,并将(1)中从shape文件中读取的空间数据存储到空间数据结构中。(3)以VC为IDE,调用VC的绘图函数及其他函数,将实习2中的空间数据结构可视化。并实现GIS常用的放大、缩小、漫游等功能。(4)在实习(3)的基础之上,实现空间点、线、面等空间对象的缓冲区分析,并将缓冲区分析的结果高亮显示。1.2思路及结果1.2.1点、线、面的读取Shapefile中的点状目标由一对X、Y坐标构成,坐标值为双精度型(double)。Shapefile中的线状目标是由一系列点坐标串构成,一个线目标可能包括多个子线段,子线段之间可以是相离的,同时子线段之间也可以相交。NumParts记录了当前线目标所包含的子线段的个数;NumPoints记录了当前线目标的坐标点总数;Parts记录了每个子线段的第一个坐标点在坐标数组points中的位置,以便读取数据;Points是用于存放当前线目标的X、Y坐标的数组;Box记录了当前线状目标的坐标范围(同样适用于面状目标)。Shapefile中的面状目标是由多个子环构成,每个子环是由至少四个顶点构成的封闭的、无自相交现象的环。对于含有岛的多边形,构成它的环有内外环之分,每个环的顶点的排列顺序或者方向说明了这个环到底是内环还是外环。一个内环的顶点是按照逆时针顺序排列的;而对于外环,它的顶点排列顺序是顺时针方向。如果一个多边形只由一个环构成,那么它的顶点排列顺序肯定是顺时针方向。1.2.2点、线、面的显示成功读取点,线,面后,即可显示。由于shapefile覆盖的地理范围千差万别,为了方便显示,需要把坐标改到适应当前窗口大小,这里四个显示的边界(left,right,top,bottom)均保留20px的空白,在余下的空间里显示该shapefile,原坐标(x,y)转换到新的坐标(x’,y’)d公式如下,图1为显示的过程的示意图。图1坐标变换示意图(x,y)为shp上一点原始的坐标,(x’,y’)为显示的坐标黑色边框为shp的范围或者为应用显示界面的范围(此时橙色为实际显示范围,两者之间相差20px)()x,ybox2[]()bottombox[0](left)box3[]()topbox[1](right)()x',y'GIS暑期实习5x′=left+20+(right−left−40)x−box[0]box[1]−box[0]y′=top+20+(bottom−top−40)y−box[3]box[2]−box[3]其中(x,y)为shp上一点原始的坐标,(x’,y’)为显示的坐标。1.2.3主要功能放大、缩小、漫游等操作在MFC以及点的缓冲区十分简单,所以这里仅介绍线和面的缓冲区。缓冲区程序将遍历输入要素的每个折点并创建缓冲区偏移。通过这些偏移创建输出缓冲区要素。许多软件(例如ArcGisDesktop和ArcGisPro)生成缓冲区的原理如图2所示。图2创建缓冲区(a)输入线要素(b)在输入线要素周围创建的偏移(c)通过偏移获得的缓冲区图片来源ArcGISPro工具参考但是每条线段的首尾的半圆形缓冲区建立上比较困难,所以在这里进行了简化处理,及将原来的半圆改为线段连接,原理如图3所示。但当缓冲区半径相对较大时,容易出现一些问题。图3创建缓冲区(本文)(a)输入线要素(不同的颜色为)(b)对每一个线段的按照缓冲区半径生成周围的四个点(对应点的颜色与线段一致)(c)按一定顺序(注意转折点处)连接这些点面和线的缓冲区创建方式类似,仅需画出多边形外侧的缓冲区。1.2.4结果下图分别为点线面的缓冲区。点的缓冲区半径为100,显示时已经缩小一次;(玉树断层)线的缓冲区半径为0.02;(大连市)面的缓冲区半径为0.02。(a)(b)(c)(a)(b)(c)GIS暑期实习6图4.(a)点缓冲区(b)线缓冲区(c)面缓冲区GIS暑期实习7第二部分Mo二次开发2.1实习概要(1)学习MO的安装,以及MO工程的建立。(2)了解基于组件GIS的图层和数据操作,重点掌握通过编写代码的方式加载数据的方法;查询并显示某一图层的相关属性;编写代码实现调整地图图层顺序的功能.(3)掌握MO中GIS查询功能的实现方法。(4)掌握MO中图例控件的使用。2.2概述与结果按照指导文件实现了:添加图层、重置、下移图层、上移图层、自动调整、删除图层、清空图层、唯一值渲染、点密度渲染、放大、缩小、全屏显示、查
本文标题:GIS暑期实习
链接地址:https://www.777doc.com/doc-4889809 .html