GIS软件开发技术报告_第1页
GIS软件开发技术报告_第2页
GIS软件开发技术报告_第3页
GIS软件开发技术报告_第4页
GIS软件开发技术报告_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、G IS软件开发技术报告目录1项目内容51.1 项目目的51.2项目任务62 GIS软件底层开发 62.1技术路线62.1.1需求分析62.1.2项目设计72.1.3项目开发92 2逻辑结构112.3GIS 系 统 功 能 设 计132 3 1功能概述132.3.2功能模块143 C#.NET与 AE二次开发263.1技术路线263.1.1需求分析263.1.2项目设计273.1.3项目开发283.2罗辑结构283.3GIS 系 统 功 能 设 计28331 功能概述283.3.2功能模块284总结29GIS软件开发技术课程实习报告院(系)名 称:XXXXXXX班级名称 :XXXXX学生姓名

2、:XXXXX年X月1项目内容1.1项目目的进一步了解C+开发的相关知识,掌握 C+开 发的基本技术,丰富C+开发的实战经验。拓展 对C#+AE的二次开发的认识,对接口的调用有 一定的了解,其次也是为了增强自己的团队协作意识,了解软件开发的思考角度和主要流程1.2项目任务实习一(底层开发):解析MIF、MID文件并绘制;提供图-属性、属性- 图的检索;符号系统符合Map Info显示规范;构建空间索引,优化图形绘制和空间检索效率;实习二(二次开发):SHP数据T MIF数据的格式转换2 GIS软件底层开发(详)2.1技术路线2.1.1需求分析正文:(宋体小四,首行缩进2字符,正文间行 距固定为2

3、3磅)1)任务概述:本次GIS的底层开发任务是基于 MFC的图形绘制和检索,要求在 windows环境下实现地图的读取、显示、基础操作(放大、缩小)、添加属性信息、地图目标物索引的建立和查询,根据个人需求使用vs/vc 利用C+语言(可包括部分c语言)。要求软件能够正常运行,并能够 进一步做到优化和美化。2)数据描述: 数据输入:系统所针对的数据主要包括 mif数据和mid数据两种类型,其中 mif数据主要储存图形数据,mid数据存储属性数据。 数据输出:mif数据以点、线、面、特殊符号为对象以相应颜色矢量图形呈 现在窗体中,mid数据以文字形式呈现。3)功能需求:软件的功能模块划分为文件操作

4、,建立索引、索引查询,符号绘制, 图-属性、属性-图的检索。几个模块均通过鼠标点击响应机制实现功能 的操作和实现。4)性能需求:软件的性能尽量达到最优,包括数据的精确程度、响应时间、运行 时间都尽可能地达到最优。5)运行需求:软件的运行在一般的电脑上均可正常运行,对于软件的运行错误及 时检查和修复。2.1.2项目设计1)总体设计根据软件的需求分析进行系统总体设 计,包括有系统设计阶段和结构设计阶段。 其中系统设计阶段主要是对组成系统的文 件、程序、文档等进行设计,确定系统的模 块组成以及模块之间的相互关系。结构设计 则包括了功能结构、数据结构。丄系统需求根据系统的需求分析内容进行软件各个阶段和

5、内容的设计。丄主要功能流程图:开始读取数据部分重绘拉框选择检索鼠标松开重绘以放大弹岀对话框选择文件在需要放大之处 拉框确定读取文件点击索引建立是结束ip绘图根据图层名称选取符 号类库中的相应符号2)接口设计丄用户接口用户通过在PC机上打开软件(要求运 行环境为windows系统),通过对软件 功能的利用进行数据的交互处理。丄外部接口系统版本必须在 Windows7及以上。GisApp主应用程序必须安装在计算机 上。必须留有足够的硬盘空间 丄内部接口通过打开文件方式获取数据信息,进行 数据操作。软件的其他操作模块基于打开后显示 的数据进行3)运行设计丄一般的处理流程是先打开数据,随后可 使用其他

6、功能模块丄系统运行时有较友好的界面,基本能够 实现用户的数据处理要求丄系统响应时间应该符合用户的一般需求,响应时间都应该在10秒之内2.1.3项目开发1)软件定义:要求实现的软件为基于底层开发的具有地 理数据读取和检索功能的基础地理信息软 件。2)相关知识丄Mif、mid数据读取:MIF由文件头和数据段 组成,第一部分“文件头定义了版本信息、 字符集、投影参数坐标类型与表结构。第二 部分为“数据段”,数据段包含MAPINFO定 义的点、线、面、多义线、区域、圆弧、文本、矩形、圆角矩形和椭圆等实体。MID属性数据文件按MIF中定义的属性结构分别描 述了每个图形对象的属性内容。丄网格索引:格网型空

7、间索引的基本思想是将研 究区域用横竖线条划分大小相等或不等的格 网,记录每一个格网所包含的空间实体。当 用户进行空间查询时,首先计算出用户查询 对象所在格网,然后再在该网格中快速查询 所选空间实体,这样一来就大大地加速了空 间索引的查询速度。丄四叉树索引:四叉树索引的基本思想是将地理 空间递归划分为不同层次的树结构。它将已 知范围的空间等分成四个相等的子空间,如 此递归下去,直至树的层次达到一定深度或 者满足某种要求后停止分割。四叉树的结构 比较简单,并且当空间数据对象分布比较均 匀时,具有比较高的空间数据插入和查询效 率。丄放大:图幅显示范围重新赋值和映射,目标重绘丄符号库:符号系统符合Ma

8、plnfo显示规范。3)项目计划:编写软件设计方案理解mif、mid数据组 织结构掌握C+/C语言关于读取数据的 函数和语句设计地图数据存储结构建 立符号库绘制地图建立索引类、索引 管理类初始化索引网格和网格动态数组 查询操作4)项目实施:根据软件设计书进行软件的编码与测试5)项目交付:第一阶段:数据的读取和绘制第二阶段:软件成果汇总2.2逻辑结构程序的实现按照面向对象的算法进行设计,利用了类的封装、继承、多态性。1)地图数据存储的逻辑结构2)网格索引类对象ID索引域边界indexBounding索引idxID*查找对象SearchlndexAreaObjec判断点在矩形内IsInside判断

9、线与矩 形相交IsPolylineInter函数索引域 CSpatiallndexArea3)建立索引开始是否建立索是.引是是否建立网格索引是否建立四叉树索引T否否结束4)索引查询开始设置网格行列数、索引范围设置四叉树深度、索引范围已选择四叉树索引初始化网格初始化网格鼠标绘制矩形框将网格所覆盖 的对象加入网 格对象数组内将处于叶节点 的网格所覆盖 的对象加入到 网格的对象数 组内已选择格网索引鼠标绘制矩形框从四叉树最顶端开始结束遍历所有网格找出与当前矩形区域有交集的网格对于以上结果网格逐一遍 历其中对象,判断是否与 当前矩形相交对于选中的目标进行重绘2.3 GIS系统功能设计2.3.1功能概述

10、选出有交集的对象进行重 绘对于选中的叶节点遍历其 中的对象,判断与矩形是否有交集要求软件能够解析MIFMID对父节点进行遍历,选出与矩形有交集的节点对每个选中的父节点遍历它们的子节点选出与矩形有交集的子节点以选中的子节点重新做为父节点进行以上相同遍历直到叶节点结束文件并进行绘制;提供图-属性、属性-图的检索;其次构 建空间索引,实现查询操作,优化图形绘制和空 间检索效率;其中符号系统的设计要符合 Maplnfo显示规范。2.3.2功能模块1)打开文件显示 丄功能描述用于打开文件夹读取文件内容(这里为mif、mid数据),并显示出来 丄性能根据数据量的多少,数据打开和绘制的时 间会由实际情况的不

11、同而有所不同。这里 所用的数据显示时间不超过5秒 丄输入项目在输入文件中选择要输入打开的mif、mia文件丄输出项目这里只要求数据以图形的形式显示出来, 不要求进行其他的输出功能丄算法SHGetPathFromlDList(pList, szPath) /把指定的文档或目录地点转换为文档系统路径OnOpenFolder(szPath);/ 通过路径打开 文件夹MIFPaths.Add(fi nder.GetFilePath(); 列 举所有的在当前目录下的文件,并且将他们的文 件名存储在数组里面ReadMIFData(MIFPaths.GetAt(i); 逐 个读取文件_wfopen_s(&f

12、p, MIFData, _T(r);/ 打 开mif数据_ wfopen_s(&fp1, MIDData, _T(r);/ 打 开mid数据geomap.AddLayer(layer);/ 逐图层添加 layer-AddObject(obj); 逐对象添加 (CGeoPolyli ne*)obj)-AddPoi nt(CPoi nt(x1,y1);/ 线的坐标数据(CGeoPoi nt*)obj)-p t=CPoi nt(x1,y1); 点的坐标数据(CGeoPolygo n*)obj)-AddPoi nt(CPoi nt (x1, y1);/面的坐标数据geomap.wcRect = map

13、Rect;/ 获得图幅显示范围/ 画线void CGeoPolyli ne:Draw(CDC *pDC)pDC-MoveTo(pts.GetAt(0);pDC-Li neTo(pts.GetAt(i);/ 画线pDC-TextOut(pt.x, pt.y, Colum nN ame); pDC-Ellipse(pt.x - 1000, pt.y - 1000, pt.x + 1000, pt.y + 1000);/ 画面void CGeoPolygo n:Draw(CDC *pDC) pDC-Polygo n(pts.GetData(),pts.GetSize ();丄接口通过按钮和菜单进行相

14、应函数的调用,进而完成数据打开和绘制功能的实现开始读取数据ReadMIFData读取数据浏览文件夹On FileOpe n()读取文件夹OnOpenFolder点(CGeoPoi nt*)obj)-pt=CPoi nt读取目标对象数据和属性数据CGeoObject线(CGeoPolyli ne*)obj)-AddPoi nt图层layer-AddObject(obj)地图geomap.AddLayer(layer)画图面(CGeoPolygon *)obj)-AddPoi ntaw(pDC)坐标映射On PrepareDC(CDC* pDC, CPrintlnfo* plnfo)geoLaye

15、rs.GetAt (i)-Draw(pDC)geoObjts.GetAt(i)- Draw(pDC)CGeoPolyg on: :Draw(CDC *pDC)CGeoPoi nt:D raw(CDC* pDC)CGeoPolyline: :Draw(CDC *pDC)结束丄限制条件打开的数据量不能过大,否则会引起系统 反应延时等情况;打开数据类型限制为mif和mid数据。2)建立索引丄功能描述对于网格索引而言,建立论n的格网(这 里在程序内部赋值),对每一个网格,遍 历所有对象并进行判断,若对象与当前格 网相交或包含于格网中,则将对象存储在 网格的对象数组中。对于四叉树索引,设定子节点网格的对

16、象 数目阈值,要求每一个处于子节点的网格 数组所包含的数量都不低于这个阈值,即 每做一次网格的四象限划分都进行一次 判断。丄性能格网索引适合于数据量较大的项目建立 相应索引,建立的效率高;四叉树索引适 合于数据量一般,索引的建立略显麻烦。丄输入项目鼠标操作指令。丄输出项目索引的建立和绘制丄算法建立索引voidCTESTGISView:O nGridln dex()geomap .In tlzldxArea(a, b); 传递索引行列数spatialI ndex-SetSpa tialI ndex(wcRect, x, y);/设置索引参数geoLayer- ln itlizeldxArea()

17、; 初始化索引动态数组/点状目标if(area-lsPolyg onln ter(rectMIN,area- in dexBou ndi ng)判断目标与当前格网区域是否相 交 area-AddObj(obj);加入目标/线状目标if (area-IsPolylineInter(pt1, pt2, area- in dexBo undin g) area-AddObj(obj);加入目标/面状目标if (area-Is In side(pt, area- in dexBo undin g)area-AddObj(obj);加入目标geomap.spatiall ndex-Draw(pDC);绘

18、制网格丄接口通过按钮和菜单进行相应函数的调用,完成相应索引类型的建立开始建立索引OnGridlndex ()初始化索引In tlzIdxArea()创建索引Create In dexArea ()设置索引行列数、范围SetSpatialI ndex()绘制索引窗格spatialI ndexDraw( pDC初始化索引动态数组In itlizeIdxArea()丄限制条件格网索引的行列数和四叉树索引的深度 都在程序内部实现了设置,大大缩小了程 序的适用范围和使用适度3)索引查询功能描述获取鼠标在屏幕上绘制的矩形,对于网格 索引,逐一遍历网格,判断矩形区域与当 网格是否有交集,若有交集则对当前网格

19、 内所包含的所有对象逐一遍历,判断是否 与矩形区域有交集,若有交集则对该目标 进行重绘且颜色要有所改变以区分其他 未被选中的目标;对于四叉树索引,由父节点开始,若有交 集,则遍历此父节点的子节点,对每一个 子节点做同样的父节点处理,直到到达叶 节点结束,对于所有与矩形区域有交集的 子节点网格,逐一遍历其中的对象,判断 是否与矩形区域有交集,若有交集则对该 目标进行重绘且颜色要有所改变以区分 其他未被选中的目标;丄性能网格索引查询适合于数据量大的项目,查 询算法简单,查询效率高,四叉树索引适 合数据量相对较小的项目,查询效率高 丄输入项目根据鼠标在屏幕上的绘制输入框选矩形 丄输出项目对于被选中的

20、目标进行重绘 丄算法voidCTESTGISView:BoxSelected() geomap.spatiall ndex-Searchln dexArea(&rect);int size =geomap.spatiall ndex-SI ndexAreas.GetSize( );for (int i = 0; i SI ndexAreas.GetAt(i)Jin dexArea-SearchI ndexObj(&rect, dc);/重绘点if (Is In side(pt, rect)(CGeoPoi nt*)obj)-Draw(pDC);llllllllllllllllllllll/重绘

21、线if (IsPolylinelnter(pt1, pt2,rect)(CGeoPolyli ne*)obj)-Draw(pDC);lllllllllllllllllllllllll重绘面if(IsPolyg onln ter(rect1,rect)(CGeoPolyg on *)obj)-Draw(pDC);丄接口通过鼠标点击和菜单进行相应函数的调用,完成相应索引类型的建立开始鼠标松开On LButto nUp拉框BoxSelected()鼠标按下On LButton Down记录与矩形相交格网Search In dexArea(CRect*rect)查询目标SearchI ndexOb j

22、(CRect *rect, CDC *pDC)重绘obj)- Draw(pDC)丄限制条件目前程序只能满足拉框检索4)放大丄功能描述选择拉框放大菜单选项,用鼠标在屏幕需要进行放大的地方绘制合适的矩形框,鼠 标松开即可实现放大操作丄性能由于所显示的地图内容均为矢量数据,并 且地图的放大操作是基于重绘实现的,所 以放大操作所用的时间依赖于数据量的 大小丄输入项目鼠标在屏幕绘制矩形框丄输出项目 放大后得到的局部图像丄算法voidCTESTGISView:O nEn large() if (isLarge)if (abs(pt1.x - pt2.x)2| abs(pt1.y-pt2.y)pt2.x ?

23、 pt2.x : ptl.x;geomap.wcRect.right = pt1.xpt2.x ? pt2.x : ptl.x;geomap.wcRect.bottom = pt1.ypt2.y ? pt2.y : ptl.y;In validate(); 丄接口通过鼠标点击菜单选项和屏幕操作拉框放大OnEnlarge ()地图显示区域变换重绘In validate ()结束丄限制条件只实现了拉框放大,其他放大功能未实现3 C#.NET与AE二次开发(略)3.1技术路线3.1.1需求分析1)任务概述:本次GIS的二次开发任务是基于 C#W AE的数据格式转换,要求在 windows环境下实现s

24、hp数据的读取、shp数据转换为mif数据。2)数据描述:*数据输入:输入shp数据丄 数据输出:数据输出为mif数据格式3)功能需求:软件的功能要求实现shp数据的读取和shp数据转换为mif数据4)性能需求:软件的性能尽量达到最优,包括数据的精确程度、响应时间、运行 时间都尽可能地达到最优。5)运行需求:软件的运行在一般的电脑上均可正常运行,对于软件的运行错误及 时检查和修复。3.1.2项目设计1) 设计思想:二次开发使用vs开发环境加以实现,并使用了 ESRI interop程序集,它服务 于被放置在.NET窗体上的、位于.NET窗体 控件中的ArcGIS控件,这些程序集在托管 的.NE

25、T代码和非托管的COM代码之间起了 桥梁作用。2) 主要功能流程:开始T读取数据-弹出对话框-选择shp文件T确定-保存T选择保存路径及输入 mif文件名确定转化结束3) 接口设计:-输入shp文件路径OpenFileDialog ()string fullpath = fd.FileName; / 文件路径名Shapepath = System.IO. Path .GetDirectoryName(fullpath); / 得到文件的路径名 Shape name = System.IO. Path .GetFileNameWithoutExte nsio n(fullpath);/ 不包括后

26、缀的文件名textI nShape.Text = fullpath;丄输出mif文件路径SaveFileDialog ()stri ng fullpath = sf.FileName;Mifpath = System.IO. Path .GetDirectoryName(fullpath);Mifname = System.IO. Path .GetFileNameWithoutExte nsio n(fullpath);textOutMif.Text = fullpath;StreamWriter myWrite = new StreamWriter (myStream);/ 写文件IWorkspace pWS = pWSF.Ope nF romFile(fullpath, 0)/ 打开工作空间IFeatureClass pFeatureClass = pFWS.OpenFeatureClass(filename);

温馨提示

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

评论

0/150

提交评论