




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、、目录 TOC o 1-5 h z HYPERLINK l bookmark7 o Current Document 项目内容 3 HYPERLINK l bookmark9 o Current Document 项目目的 3 HYPERLINK l bookmark11 o Current Document 项目任务 3 HYPERLINK l bookmark13 o Current Document GIS软件底层开发3 HYPERLINK l bookmark15 o Current Document 技术路线 3 HYPERLINK l bookmark17 o Current Do
2、cument 需求分析 3 HYPERLINK l bookmark19 o Current Document 项目设计 4 HYPERLINK l bookmark21 o Current Document 项目开发 5 HYPERLINK l bookmark23 o Current Document 逻辑结构 5GIS 系统功能设计 7功能概述 7 HYPERLINK l bookmark30 o Current Document 功能模块 8 HYPERLINK l bookmark32 o Current Document C#.NET与 AE二次开发14 HYPERLINK l b
3、ookmark34 o Current Document 技术路线 14 HYPERLINK l bookmark36 o Current Document 需求分析 14 HYPERLINK l bookmark38 o Current Document 项目设计 15项目开发 15逻辑结构 15 HYPERLINK l bookmark43 o Current Document GIS系统功能设计 16 HYPERLINK l bookmark45 o Current Document 功能概述 16 HYPERLINK l bookmark47 o Current Document 功能
4、模块 16 HYPERLINK l bookmark49 o Current Document 总结 16GIS软件开发技术课程实习报告院(系)名 称: XXXXXXX班 级 名 称 : XXXXX学 生 姓 名 : XXXXX年X月1项目内容项目目的进一步了解C+开发的相关知识,掌握 C+开发的基本技术,丰富 C+开发的实战经验。 拓展对C#+AE的二次开发的认识,对接口的调用有一定的了解,其次也是为了增强自己的 团队协作意识,了解软件开发的思考角度和主要流程。项目任务实习一(底层开发):解析MIF、MID文件并绘制;提供图-属性、属性- 图的检索; 符号系统符合MapInfo显示规范; 构
5、建空间索引,优化图形绘制和空间检索效率; 实习二(二次开发):SHP数据一 MIF数据的格式转换2 GIS软件底层开发(详)技术路线需求分析正文:(宋体小四,首行缩进 2字符,正文间行距固定为 23磅)1)任务概述:本次GIS的底层开发任务是基于 MFC的图形绘制和检索,要求在 windows环境下实现地图的读取、显示、基础操作(放大、缩小)、添加 属性信息、地图目标物索引的建立和查询,根据个人需求使用vs/vc ,利用C+语言(可包括部分c语言)。要求软件能够正常运行,并能够进 一步做到优化和美化。2)数据描述:数据输入:系统所针对的数据主要包括 mif数据和mid数据两种类 型,其中mif
6、数据主要储存图形数据,mid数据存储属性数据。数据输出:mif数据以点、线、面、特殊符号为对象以相应颜色矢 量图形呈现在窗体中,mid数据以文字形式呈现。3)功能需求:软件的功能模块划分为文件操作,建立索引、索引查询,符号绘制, 图-属性、属性-图的检索。几个模块均通过鼠标点击响应机制实现功能 的操作和实现。4)性能需求:软件的性能尽量达到最优,包括数据的精确程度、响应时间、运行 时间都尽可能地达到最优。5) 运行需求:软件的运行在一般的电脑上均可正常运行,对于软件的运行错误及 时检查和修复。2.1.2项目设计1)总体设计根据软件的需求分析进行系统总体设计,包括有系统设计阶段和结构设计阶段。其
7、中系统设计阶段主要是对组成系统的文件、程序、文档等进行设计,确定系统的模块组成以及模块之间的相互关系。结构设计则包括了功能结构、数据结构。4系统需求根据系统的需求分析内容进行软件各个阶段和内容的设计。工主要功能流程图:2)接口设计工用户接口用户通过在PC机上打开软件(要求运行环境为 windows系统),通过对软件功能的利用进行数据的交互处理。上外部接口系统版本必须在Windows7及以上。GisApp主应用程序必须安装在计算机上。必须留有足够的硬盘空间。、4 内部接口通过打开文件方式获取数据信息,进行数据操作。软件的其他操作模块基于打开后显示的数据进行3) 运行设计4 一般的处理流程是先打开
8、数据,随后可使用其他功能模块4系统运行时有较友好的界面,基本能够实现用户的数据处理要求工 系统响应时间应该符合用户的一般需求,响应时间都应该在10秒之内2.1.3项目开发1)软件定义:要求实现的软件为基于底层开发的具有地理数据读取和检索功能的基础地理信息 软件。2)相关知识4 Mif、mid数据读取:MIF由文件头和数据段组成,第一部分“文件头”定义了 版本信息、字符集、投影参数坐标类型与表结构。第二部分为“数据段”,学据段包含MAPINFO定义的点、线、面、多义线、区域、圆弧、文本、矩形、 圆角矩形和椭圆等实体。MID属性数据文件按MIF中定义的属性结构分别描 述了每个图形对象的属性内容。4
9、 网格索引:格网型空间索引的基本思想是将研究区域用横竖线条划分大小相 等或不等的格网,记录每一个格网所包含的空间实体。当用户进行空间查询 时,首先计算出用户查询对象所在格网,然后再在该网格中快速查询所选空 间实体,这样一来就大大地加速了空间索引的查询速度。4 四叉树索引:四叉树索引的基本思想是将地理空间递归划分为不同层次的树 结构。它将已知范围的空间等分成四个相等的子空间,如此递归下去,直至 树的层次达到一定深度或者满足某种要求后停止分割。四叉树的结构比较简 单,并且当空间数据对象分布比较均匀时,具有比较高的空间数据插入和查 询效率。4-放大:图幅显示范围重新赋值和映射,目标重绘4-符号库:符
10、号系统符合 MapInfo显示规范。3)项目计划:编写软件设计方案一理解mif、mid数据组织结构一掌握C+/C语言关于读取数据 的函数和语句 一设计地图数据存储结构 一建立符号库一绘制地图一建立索引类、 索引管理类一初始化索引网格和网格动态数组 一查询操作4) 项目实施:根据软件设计书进行软件的编码与测试5)项目交付:第一阶段:数据的读取和绘制第二阶段:软件成果汇总2.2逻辑结构程序的实现按照面向对象的算法进行设计,利用了类的封装、继承、多态性。1)地图数据存储的逻辑结构CGeoMap2)网格索引类绘制 Draw(CDC*pDC)一*设置索引SetSpatiallndex索引管理CSpati
11、alIndex创建索引CreateIndexArea ()索引范围 indexRect查找索引域SIndexAreas添加索引域AddIndexArea查询索引域SearchIndexArea建立索引开始是否建立索J引是否建立网曰格索引一方一设置网格行列 数、索引范围初始化网格将网格所覆盖 的对象加入网 格对象数组内否结束建立四 叉树索引设置四叉树深 度、索引范围初始化网格将处于叶节点 的网格所覆盖 的对象加入到 网格的对象数 组内索引查询开始2.3 GIS系统功能设计功能概述要求软件能够解析 MIF、MID文件并进行绘制;提供图-属性、属性- 图的检索;其次其中符号系统的设计要符合构建空间索
12、引,实现查询操作,优化图形绘制和空间检索效率;MapInfo显示规范。功能模块1)打开文件显示4-功能描述用于打开文件夹读取文件内容(这里为mif、mid数据),并显示出来4-性能根据数据量的多少,数据打开和绘制的时间会由实际情况的不同而有所不同。这里所用的数据显示时间不超过5秒4-输入项目在输入文件中选择要输入打开的mif、mia文件4-输出项目这里只要求数据以图形的形式显示出来,不要求进行其他的输出功能算法SHGetPathFromIDList(pList, szPath) 把指定的文档或目录地点转换为文档系统路径OnOpenFolder(szPath);通过路径打开文件夹MIFPaths
13、.Add(finder.GetFilePath();列举所有的在当前目录下的文件,并且将他们的 文件名存储在数组里面ReadMIFData(MIFPaths.GetAt(i); 逐个读取文件_wfopen_s(&fp, MIFData, _T(r);/ 打开 mif 数据_ wfopen_s(&fp1, MIDData, _T(r);/ 打开 mid 数据geomap.AddLayer(layer);/ 逐图层添力口layer-AddObject(obj);/ 逐对象添加(CGeoPolyline *)obj) -AddPoint(CPoint(x1, y1); 线的坐标数据(CGeoPoin
14、t*)obj) -pt=CPoint(x1,y1);/ 点的坐标数据(CGeoPolygon*)obj) -AddPoint(CPoint(x1, y1); 面的坐标数据geomap.wcRect = mapRect;/获得图幅显示范围/ 画线void CGeoPolyline:Draw(CDC *pDC)pDC-MoveTo(pts.GetAt(0);pDC-LineTo(pts.GetAt(i);/ 画线pDC-TextOut(pt.x, pt.y, ColumnName);pDC-Ellipse(pt.x - 1000, pt.y - 1000, pt.x + 1000, pt.y +
15、1000);/ 画面void CGeoPolygon:Draw(CDC *pDC)pDC-Polygon(pts.GetData(),pts.GetSize();接口通过按钮和菜单进行相应函数的调用,进而完成数据打开和绘制功能的实现。、开始读取数据ReadMIFData坐标映射浏览文件夹OnFileOpen。读取文件夹OnOpenFolder地图 geomap.AddLayer (layer)画图geomap.Draw(pDC)geoLayers.GetAt (i)-Draw(pDC)OnPrepareDC(CDC*pDC, CPrintInfo*pInfo)4-限制条件打开的数据量不能过大,
16、否则会引起系统反应延时等情况;打开数据类型限制为 mif和mid数据。建立索引4-功能描述对于网格索引而言,建立mXn的格网(这里在程序内部赋值),对每一个网格,遍历所有对象并进行判断,若对象与当前格网相交或包含于格网中,则将对象存储在网格的对象数组中。对于四叉树索引,设定子节点网格的对象数目阈值, 要求每一个处于子节点的 网格数组所包含的数量都不低于这个阈值, 即每做一次网格的四象限划分都进 行一次判断。性能格网索引适合于数据量较大的项目建立相应索引,建立的效率高;四叉树索引适合于数据量一般,索引的建立略显麻烦。工输入项目鼠标操作指令。输出项目索引的建立和绘制算法建立索引void CTEST
17、GISView:OnGridIndex()geomap.IntlzIdxArea(a, b);/ 传递索引行列数spatialIndex-SetSpatialIndex(wcRect, x, y);设置索引参数geoLayer-InitlizeIdxArea(); 初始化索引动态数组/点状目标if (area -IsPolygonInter(rectMIN,area -indexBounding)/ 判断目标与当前格网区域是否相交 area-AddObj(obj);/ 加入目标/线状目标if (area-IsPolylineInter(pt1, pt2, area -indexBounding
18、)area-AddObj(obj);/ 加入目标/面状目标if (area -IsInside(pt, area -indexBounding)area-AddObj(obj);/ 加入目标geomap.spatialIndex -Draw(pDC);绘制网格接口通过按钮和菜单进行相应函数的调用,完成相应索引类型的建立开始建立索引OnGridIndex ()初始化索引IntlzIdxArea()创建索引CreatelndexArea ()设置索引行列数、范围SetSpatiallndex ()绘制索引窗格 spatiallndexDraw( pDC)4-限制条件格网索引的行列数和四叉树索引的深
19、度都在程序内部实现了设置,大大缩小了程序的适用范围和使用适度索引查询功能描述获取鼠标在屏幕上绘制的矩形,对于网格索引,逐一遍历网格,判断矩形区域与当网格是否有交集,若有交集则对当前网格内所包含的所有对象逐一遍历,判断是否与矩形区域有交集, 若有交集则对该目标进行重绘且颜色要有所改变以区分其他未被选中的目标;对于四叉树索引,由父节点开始,若有交集,则遍历此父节点的子节点, 对每一个子节点做同样的父节点处理,直到到达叶节点结束, 对于所有与矩形区域有交集的子节点网格, 逐一遍历其中的对象, 判断是否与矩形区域有交集,若有交集则对该目标进行重绘且颜色要有所改变以区分其他未被选中的目标;性能网格索引查
20、询适合于数据量大的项目,查询算法简单,查询效率高,四叉树索引适合数据量相对较小的项目,查询效率高4-输入项目根据鼠标在屏幕上的绘制输入框选矩形输出项目对于被选中的目标进行重绘U 算法void CTESTGISView:BoxSelected()geomap.spatiallndex -SearchIndexArea(&rect);int size = geomap.spatiallndex -SIndexAreas.GetSize();for (int i = 0; i SIndexAreas.GetAt(i); indexArea-SearchIndexObj(&rect, dc);/重绘点
21、if (IsInside(pt, rect) (CGeoPoint*)obj) -Draw(pDC);/重绘线if (IsPolylineInter(pt1, pt2, rect) (CGeoPolyline*)obj) -Draw(pDC);/重绘面if (IsPolygonInter(rect1,rect)(CGeoPolygon *)obj)-Draw(pDC);工接口通过鼠标点击和菜单进行相应函数的调用,完成相应索引类型的建立开始鼠标松开OnLButtonUp拉框BoxSelected()鼠标按下OnLButtonDown记录与矩形相交格网SearchIndexArea(CRect*r
22、ect)重绘obj)-Draw(pDC)查询目标SearchIndexObj(CRect*rect, CDC*pDC)4-限制条件目前程序只能满足拉框检索放大工功能描述选择拉框放大菜单选项,用鼠标在屏幕需要进行放大的地方绘制合适的矩形框, 鼠标松开即可实现放大操作由于所显示的地图内容均为矢量数据,并且地图的放大操作是基于重绘实现的, 所以放大操作所用的时间依赖于数据量的大小4-输入项目鼠标在屏幕绘制矩形框工输出项目放大后得到的局部图像void CTESTGISView:OnEnlarge() if (isLarge)if (abs(pt1.x - pt2.x)2 | abs(pt1.y - p
23、t2.y)pt2.x ? pt2.x : ptl.x;geomap.wcRect.right = pt1.xpt2.x ? pt2.x : ptl.x;geomap.wcRect.bottom = pt1.ypt2.y ? pt2.y : ptl.y;Invalidate。;通过鼠标点击菜单选项和屏幕操作开始4-限制条件只实现了拉框放大,其他放大功能未实现3 C#.NET与AE二次开发(略)技术路线需求分析1)任务概述:本次65二二次开发任务是基于 C#W AE的数据格式转换,要求在 windows环境下实现shp数据的读取、shp数据转换为mif数据。2)数据描述:*数据输入:输入shp数据
24、* 数据输出:数据输出为mif数据格式3)功能需求:、软件的功能要求实现shp数据的读取和shp数据转换为mif数据4)性能需求:软件的性能尽量达到最优,包括数据的精确程度、响应时间、运行 时间都尽可能地达到最优。5) 运行需求:软件的运行在一般的电脑上均可正常运行,对于软件的运行错误及 时检查和修复。3.1.2项目设计1)设计思想:二次开发使用vs开发环境加以实现,并使用了ESRI interop程序集,它服务于被放置在.NET窗体上的、位于.NET窗体控件中的 ArcGIS控件,这些程 序集在托管的.NET代码和非托管的COM代码之间起了桥梁作用。2)主要功能流程:开始一读取数据一弹出对话
25、框一选择shp文件一确定一保存一选择保存路径及输入mif文件名一确定一转化一结束3)接口设计:4 输入shp文件路径 OpenFileDialog () string fullpath = fd.FileName; / 文件路径名 Shapepath = System.IO. Path .GetDirectoryName(fullpath); / 得到文件的路径名 Shapename= System.IO. Path.GetFileNameWithoutExtension(fullpath); / 不包括后 缀的文件名 textInShape.Text = fullpath; 输出mif文件路
26、径 SaveFileDialog () string fullpath = sf.FileName; Mifpath = System.IO. Path.GetDirectoryName(fullpath); Mifname = System.IO. Path.GetFileNameWithoutExtension(fullpath); textOutMif.Text = fullpath;-格式转换StreamWriter myWrite = new StreamWriter (myStream);/ 写文件 IWorkspace pWS = pWSF.OpenFromFile(fullpath, 0)/打开工作空间IFeatureClass pFeatureClass = pFWS.OpenFeatureClass(filenam
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 7《图片的特效处理》教学设计、教材分析与教学反思2024年滇人版初中信息技术七年级下册
- 农批市场水电改造项目可行性研究报告-农批市场规模扩张水电设施亟待升级
- 幼儿保教知识与能力-教师资格《幼儿保教知识与能力》模拟题4
- 2025年佳木斯职业学院单招职业技能测试题库及答案1套
- 第19课《怀疑与学问》教学设计2024-2025学年统编版语文九年级上册
- 2024中国建筑一局(集团)有限公司计量专项工作人员招聘笔试参考题库附带答案详解
- 第1课时 不退位减(教学设计)-2024-2025学年二年级上册数学人教版
- 2025年贵州护理职业技术学院单招职业适应性测试题库审定版
- 13《林教头风雪山神庙》教学设计2024-2025学年高一语文下学期(必修下册)
- 第16课《散文二篇》教学设计 2024-2025学年统编版语文八年级上册
- 氩气安全技术说明书MSDS
- 汽车运行材料ppt课件(完整版)
- 四年级数学下册教案-练习一-北师大版
- GB∕T 1732-2020 漆膜耐冲击测定法
- 2022《化工装置安全试车工作规范》精选ppt课件
- Q∕GDW 12067-2020 高压电缆及通道防火技术规范
- 汽车系统动力学-轮胎动力学
- 《经济研究方法论》课程教学大纲
- 10T每天生活污水处理设计方案
- 中国民航国内航空汇编航路314系列航线
- 山西特色文化简介(课堂PPT)
评论
0/150
提交评论