最新GIS暑期实习.docx
《最新GIS暑期实习.docx》由会员分享,可在线阅读,更多相关《最新GIS暑期实习.docx(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品资料GIS暑期实习.GIS暑期实习课程实习报告姓名:学号:专业:地球信息科学与技术教师: 2017年6月目录第一部分 GIS开发基础1.1 实习概要(1)按照 Shape 白皮书对于 shape 格式的介绍,从 shape 文件中读取空间数据。并按照空间数据的特点,自己规定一种二进制格式存储所读取的 shape 文件。 (2)按照 SFF 模型对于空间对象的定义,用面向对象的编程语言,实现 GIS 空间数据结构,并将(1)中从 shape 文件中读取的空间数据存储到空间数据结构中。(3)以 VC 为 IDE,调用 VC 的绘图函数及其他函数,将实习 2 中的空间数据结构可视化。并实现 GI
2、S 常用的放大、缩小、漫游等功能。(4)在实习(3)的基础之上,实现空间点、线、面等空间对象的缓冲区分析,并将缓冲区分析的结果高亮显示。1.2 思路及结果1.2.1点、线、面的读取Shapefile中的点状目标由一对X、Y坐标构成,坐标值为双精度型(double)。Shapefile中的线状目标是由一系列点坐标串构成,一个线目标可能包括多个子线段,子线段之间可以是相离的,同时子线段之间也可以相交。NumParts记录了当前线目标所包含的子线段的个数;NumPoints记录了当前线目标的坐标点总数;Parts记录了每个子线段的第一个坐标点在坐标数组points中的位置,以便读取数据;Points
3、是用于存放当前线目标的X、Y坐标的数组;Box 记录了当前线状目标的坐标范围(同样适用于面状目标)。Shapefile中的面状目标是由多个子环构成,每个子环是由至少四个顶点构成的封闭的、无自相交现象的环。对于含有岛的多边形,构成它的环有内外环之分,每个环的顶点的排列顺序或者方向说明了这个环到底是内环还是外环。一个内环的顶点是按照逆时针顺序排列的;而对于外环,它的顶点排列顺序是顺时针方向。如果一个多边形只由一个环构成,那么它的顶点排列顺序肯定是顺时针方向。1.2.2点、线、面的显示成功读取点,线,面后,即可显示。由于shapefile覆盖的地理范围千差万别,为了方便显示,需要把坐标改到适应当前窗
4、口大小,这里四个显示的边界(left, right, top, bottom)均保留20px的空白,在余下的空间里显示该shapefile,原坐标(x,y)转换到新的坐标(x,y)d 公式如下,图1为显示的过程的示意图。图1 坐标变换示意图(x,y)为shp上一点原始的坐标,(x,y)为显示的坐标黑色边框为shp的范围或者为应用显示界面的范围(此时橙色为实际显示范围,两者之间相差20px)x=left+20+right-left-40 x-box0box1-box0 y=top+20+bottom-top-40 y-box3box2-box3 其中(x,y)为shp上一点原始的坐标,(x,y)
5、为显示的坐标。1.2.3主要功能放大、缩小、漫游等操作在MFC以及点的缓冲区十分简单,所以这里仅介绍线和面的缓冲区。缓冲区程序将遍历输入要素的每个折点并创建缓冲区偏移。通过这些偏移创建输出缓冲区要素。许多软件(例如ArcGis Desktop和ArcGis Pro)生成缓冲区的原理如图2所示。(a)(b)(c)图2 创建缓冲区(a) 输入线要素 (b) 在输入线要素周围创建的偏移 (c) 通过偏移获得的缓冲区图片来源但是每条线段的首尾的半圆形缓冲区建立上比较困难,所以在这里进行了简化处理,及将原来的半圆改为线段连接,原理如图3所示。但当缓冲区半径相对较大时,容易出现一些问题。(a)(b)(c)
6、图3 创建缓冲区(本文)(a) 输入线要素(不同的颜色为) (b) 对每一个线段的按照缓冲区半径生成周围的四个点(对应点的颜色与线段一致) (c)按一定顺序(注意转折点处)连接这些点面和线的缓冲区创建方式类似,仅需画出多边形外侧的缓冲区。1.2.4 结果下图分别为点线面的缓冲区。点的缓冲区半径为100,显示时已经缩小一次;(玉树断层)线的缓冲区半径为0.02;(大连市)面的缓冲区半径为0.02。图4. (a)点缓冲区 (b)线缓冲区 (c)面缓冲区第二部分 Mo二次开发2.1 实习概要(1) 学习MO的安装,以及MO工程的建立。(2) 了解基于组件GIS的图层和数据操作, 重点掌握通过编写代码
7、的方式加载数据的方法; 查询并显示某一图层的相关属性; 编写代码实现调整地图图层顺序的功能.(3) 掌握MO中GIS查询功能的实现方法。(4) 掌握MO中图例控件的使用。2.2概述与结果按照指导文件实现了:添加图层、重置、下移图层、上移图层、自动调整、删除图层、清空图层、唯一值渲染、点密度渲染、放大、缩小、全屏显示、查询、漫游的基本功能,这些功能添加起来十分简单。此外,利用WindowsMediaplayer控件配合CommandButton实现了音乐的播放和停止播放的功能;利用WebBrowser控件实现gif图(该软件的背景)的动态显示。结果如下:图5. (a)添加图层并放大 (b)重置
8、(c)下移图层 (d)上移图层 (e)自动调整 (f)删除图层 (g)清空图层 (h)唯一值渲染 (i)点密度渲染 (j)放大 (k)缩小 (l)全屏显示 (m)查询 (n)漫游第三部分 GIS系统的设计与实现基于MO的公交换乘系统摘要: 随着经济的发展和人们价值观的改变,绿色出行理念越来越深入人心。乘坐公交车是绿色出行的主要方式,优秀的公交查询系统可以为市民带来很多便利,而且对于缓解城市的交通压力和降低城市的环境污染都有很大意义。在北京市迷你交通地图的基础上,研究基于组件式 GIS 的公交查询系统的设计,探讨了课提供换乘方案的公交查询系统的实现方案,以 MO2.4 +VB 6.0作为系统开发
9、平台, 以 Microsoft Access 2016为后台数据库实现公交换乘方案和地名查询、路线查询等空间查询功能。3.1 引言公共交通是各大城市市民出行的首选交通工具, 面对错综复杂的交通网络, 手动查找乘车线路是另广大市民为难的事情,因此, 开发公交查询系统或者推行基于网络电子地图的公交查询服务显得越来越重要。公交换乘查询就是要快速、准确地搜索网络上两点之间的路径。现有的很多公交换乘算法都是将公交站点、公交线路的地理位置作为属性字段存储到关系数据库或文件中, 然后采用最短路径算法、矩阵运算或者链表查询等方式求解换乘路径, 如廖楚江等1使用“图论”和空间网络数据库相结合的方法实现了一种基于
10、最少换乘次数的算法;翁敏等2使用关联矩阵实现最优换乘路径求解;杨新苗等3设计了一种基于链表的公交乘客出行路径选择模型。这些算法有些计算复杂, 效率低下;有些没有考虑步行换乘、上下行线路、环形线路、最优换乘点选择等实际问题。公交出行与很多因素相关, 大量调查研究表明, 换乘次数、出行距离、出行时间和出行费用是当今乘客选择公交出行的主要影响因素4 。结合公交乘客出行心理的考虑, 一般都是以换乘次数为优先考虑目标3 ,其次是出行费用、耗时和距离长短。乘客往往选择直观、易量算的出行距离作为第二考虑目标5 。对公交换乘的问题进行研究,首先就是要解决公共交通网络模型如何合理地表述。组件式 GIS作为现今
11、GIS应用发展最流行的一种开发方式, 给整个 GIS技术体系和应用模式带来巨大影响。 将组件 GIS技术应用于建立城市公交信息查询系统, 在地图上直观显示出目标的地理位置和周边环境, 并查询到目标周边的公交站点及公交乘车路线和换乘方案, 可以为人们的出行提供极大的方便6 。 同时能满足不同部门和用户对空间信息的需求, 并借助其空间分析能力和可视化表达,用于各种辅助决策 7。本文为实现公交系统的查询功能,在北京市迷你交通地图的基础上,研究基于组件式 GIS 的公交查询系统的设计,探讨了课提供换乘方案的公交查询系统的实现方案,以 MO2.4 +VB 6.0作为系统开发平台, 以 Microsoft
12、 Access 2016为后台数据库实现公交换乘方案和地名查询、路线查询等空间查询功能。3.2 数据本文所用数据见表1.和图6.表1. 公交线路表ID线路12345671K29北站六公园胜利新村康乐新村庆丰村采荷新村25红菱施家桥中北桥体育场路采荷新村3101康乐新村八字桥武林门余杭塘上丰潭路口市府大楼西站459丰潭路口景芳二区古荡新村天苑花园5709八字桥闸弄口新村凤起路胜利剧院岳坟6K203康乐新村庆丰村余杭塘上丰潭路口景芳二区焦家村上宁桥图6. 公交线路图3.3 方法公交车查询系统主要包括4个模块:公交线路、站点的线路、始终点站查询、和查询线路。其中公交线路和查询线路两个模块功能相似,但
13、表现上有所不同,其功能是根据选择选择的线路查询该线路下的站点;站点的路线与前者目的相反,是根据给定的站点查询线路一个站点可以被多个线路所经过;始终点站查询则是根据输入起始站点和终点站搜索有无包含两站的线路,若有则返回结果,若没有则在起始站的所在线路的换乘站继续搜索完全一次,若有则返回全部的结果,若没有则不在进行搜索,因为两次更换公交车会给用户带来极大的麻烦。3.4 结果软件的界面如图7.所示,可以进行公交线路查询、站点的线路查询、始终点站查询、和查询线路这些功能。图7. 公交查询系统(a)查询线路 (b)始终点站查询(无需换乘) (c) 始终点站查询(换乘一次)3.5 总结本系统十分简单,功能
14、还不够健全,应考虑增加站点间最短线路、最佳线路、最优观光线路等功能模块。通过对软件功能和相关算法的进一步完善, 可以使其在物流运输、车辆调度、突发事件的应急处理等应用领域发挥重要的作用。3.6 参考文献1 付仲良, 张文元, 孟庆祥. 基于 GIS 的公交数据模型研究及换乘算法实现J. 测绘通报, 2010 (7): 15-18.2 翁敏, 毋河海, 杜清运,等. 基于公交网络模型的最优出行路径选择的研究J. 武汉大学学报(信息科学版), 2004, 29(6):500-503.3 杨新苗, 马文腾. 基于 GIS 的公交乘客出行路径选择模型J. 东南大学学报: 自然科学版, 2000, 30
15、(6): 87-91.4 王庆平, 张兴芳, 宋颖, 等. 城市公交换乘的数学模型及其算法实现J. 计算机工程与应用, 2008, 44(7): 246-248.5 向万里, 刘洪升. 城市公交网络出行路径选择的计算机算法研究J. 兰州交通大学学报, 2006, 25(1):121-124.6 徐枫, 刘兆礼, 陈建军. 长春市近 50 年城市扩展的遥感监测及时空过程分析J. 干旱区资源与环境, 2005, 19(7): 80-84.7 牟风云, 张增祥, 迟耀斌, 等. 基于多源遥感数据的北京市 1973-2005 年间城市建成区的动态监测与驱动力分析J. 遥感学报, 2007, 11(2)
16、: 257-268.附录(精选代码)1.读取点状目标/*读取点状目标记录*/int CReadlayer:ReadPointlayer(FILE* shpehandle,FILE* shpewrite,CLayer *lyr)fprintf(shpewrite,shapeType:%dn,1);/读取点状目标的实体信息int RecordNumber;int ContentLength;int num =0;while(fread(&RecordNumber, sizeof(int), 1,shpehandle)!=0)num+;fread(&ContentLength,sizeof(int)
17、, 1,shpehandle);RecordNumber = OnChangeByteOrder (RecordNumber);ContentLength = OnChangeByteOrder (ContentLength);fprintf(shpewrite,RecordNumber:%dn,RecordNumber);fprintf(shpewrite,ContentLength:%dn,ContentLength);int shapeType;double x;double y;fread(&shapeType, sizeof(int), 1, shpehandle);fread(&x
18、, sizeof(double), 1, shpehandle);fread(&y, sizeof(double), 1,shpehandle);CPt pt;pt.x = x;pt.y = y;lyr-m_point.Add(pt);fprintf(shpewrite,x: %f,y: %fnn,x,y);return TRUE;2.读取线状目标/*读取线状目标的记录*/int CReadlayer:ReadPolyLinelayer(FILE* shpehandle,FILE* shpewrite,CLayer *lyr) fprintf(shpewrite,shapeType:%dn,3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 GIS 暑期 实习
限制150内