基于MAPGIS的汾河上游信息系统的设计与实现.doc

上传人:创****公 文档编号:824155 上传时间:2018-11-02 格式:DOC 页数:14 大小:725.50KB
下载 相关 举报
基于MAPGIS的汾河上游信息系统的设计与实现.doc_第1页
第1页 / 共14页
基于MAPGIS的汾河上游信息系统的设计与实现.doc_第2页
第2页 / 共14页
基于MAPGIS的汾河上游信息系统的设计与实现.doc_第3页
第3页 / 共14页
基于MAPGIS的汾河上游信息系统的设计与实现.doc_第4页
第4页 / 共14页
基于MAPGIS的汾河上游信息系统的设计与实现.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、1基于 MAPGIS 的汾河上游信息系统的设计与实现学生姓名:左海龙 指导老师:李玉轩摘要 组件式 GIS 是 GIS 与组件技术相结合的新一代地理信息系统.本文主要阐述了利用 Mapgis65 地理信息系统软件在汾河上游信息系统开发中的应用,使用 MAPGIS 组件进行 GIS 应用软件二次开发的一般方法和步骤,以及在 VB 中使用 MAPGIS 组件对象的基本步骤。利用该系统我们实现了数据处理,模型分析,三维显示,报表输出等功能,并对其实现方法作一详细论述。关键词 汾河上游,组件式开发 ,MAPGIS一、前言汾河上游属于是黄土高原最重要的生态功能保护区之一,具有相对独立的流域系统以及特大城

2、市太原市的供水支援,单一的出供水系统与完整的流域生态系统,使太原市的用水质量和生态环境始终与汾河上游的生态安全密切相关。地理信息系统产生于将计算机应用于地理问题的研究,而且地理数据是海量级的数据,所以用计算机处理就成为必然。地理信息系统技术的应用大大提高了人类处理和分析有关地球资源、环境、社会与经济海量数据的能力。根据汾河上游项目数据量庞大繁杂,跨越年代久远的特点,设计了汾河上游信息系统,希望用户从 MAPGIS 繁多的按钮中解放出来,对促进项目进度,减少劳动量起到积极的技术支持作用。二、原则1、针对性 本系统旨在为汾河上游项目提供技术支持,所以在设计过程中要从项目出发,只设计开发对项目有用的

3、部分。2、简洁性 为用户提供简洁清晰的界面。力求简化操作,使用户在较短的时间内上手。3、实用性 每一功能,每个按钮都要实际,清晰。4、界面友好 使用户能集中精力于他们的任务,给他们带来愉悦而没有障碍的感觉,并能对他们的每一个操作的反应作出预测。三、总体设计1、开发平台选择组件式软件技术已经成为当今软件技术的潮流之一。基于组件开发(Component-Based Development,简称 CBD)是软件开发的一次革命。所谓组件式 GIS,是指基于组件对象平台,以一组具有某种标准通信接口的、允许跨语言应用的组件提供的 GIS。组件式 GIS 的基本思想是反 GIS 的各大功能模块划分为几个控件

4、,每个控件完成不同的功能。各个 GIS 控件之间,以及 GIS 控件与其他非 GIS控件之间,可以方便地通过可视化的开发工具集成起来,这种交互甚至可以跨计算机实现,形成最终的 GIS 应用。组件式 GIS 的出现为开发应用地理信息系统提供了一种新的开发手段,与传统的开发手段相比较,其优越性主要表现在:(1)组件式 GIS 具有灵活的开发手段。我们可以自由选择自己所熟悉的计算机语言进行开发(如2VB,VC,Delphi,C+ Builder 等) ,而不必专门学习二次开发语言。组件式 GIS 提供两种不同层次上的开发,一是基于 ActiveX 控件进行开发;二是直接基于组件式 GIS 的底层类库

5、(SDK)进行开发。(2)由于组件式 GIS 完全封装了 GIS 的功能,这使开发人员可以完全专注于专业功能的实现,这就使得开发难度和开发周期大大降低。(3)开发简捷,由于 GIS 组件可以直接嵌入 MIS 开发工具中,对于广大开发人员来讲,就可以自由选用他们熟悉的开发工具。而且,GIS 组件提供的 API 形式非常接近 MIS 工具的模式,开发人员可以像管理数据库表一样熟练地管理地图等空间数据,无须对开发人员进行特殊的培训。小小的 GIS 组件完全能提供拼接、裁剪、叠合、缓冲区等空间处理能力和丰富的空间查询与分析能力。(4)更加大众化,组件式技术已经成为业界标准,用户可以象使用其他 Acti

6、veX 控件一样使用GIS 控件,使非专业的普通用户也能够开发和集成 GIS 应用系统,推动了 GIS 大众化进程。组件式 GIS 的出现使 GIS 不仅是专家们的专业分析工具,同时也成为普通用户对地理相关数据进行管理的的可视化工具。目前,国内外 GIS 厂商对组件式 GIS 平台的发展前景十分看好,纷纷推出了各自的 GIS 产品。如北京超图地理信息技术有限公司推出的全组件式 GIS 平台 SuperMap2000、中地软件的MapGissdk、ESRI 的 MapObjects、MapInfo 的 MapX 等。而且国产的组件式 GIS 平台在功能上已经完全可以与国外同类产品相抗衡,在许多方

7、面甚至优于国外同类产品,这使得开发以 GIS 为核心的数字化成图系统有了更大的选择空间。VB 语言具有进行可视化程序设计、简单易用、易与外部数据针对上述条件,我选择了中地的 MAPGISSDK,MAPGIS 是武汉中地信息工程有限公司研制的具有自主版权的大型基础地理信息系统平台。它是一个集当代最先进的图形、图像、地质、地理、遥感、测绘、人工智能、计算机科学于一体的大型智能软件系统,是集数字制图、数据库管理及空间分析为一体的空间信息系统,是进行现代化管理和决策的先进工具,并支持多种开发语言如:VB,VC+,DELPHI,POWERBUILDER。2、开发设计方案系统设计系统开发系统运行MAPGI

8、S SDK65VB6.0空间数据库矢量数据库影像数据库地图库属性数据库FOXPRO 表格开发流程图3系统主界面数据处理 模型分析 三维显示 报表输出系统结构图2.1 数据库设计 数据库设计分空间数据库和属性数据库,其中空间部分由 MAPGIS65 制作,属性数据由 FOXPRO建库。2.2 数据采集首先将原始纸质地图扫描入计算机,在 MAPGIS65 的图像处理模块进行格式转换生 MSI 格式的文件并配准,在图形处理模块进行矢量化。由于图纸太大扫描仪不能一次性扫描,只能分块扫描,矢量化,最后进行接边处理。2.3 系统设计系统旨在对入库的有关数据进行处理如缓冲区处理,叠加处理,坡度坡向分析。出于

9、简洁、实用的原则,我把系统分为四个模块,这也有利于后期的编程工作,四个模块可分别编写,最后集成到主界面,从而达到提高工作效率的目的。前三个模块主要应用的是 EDITVIEW 控件,GISATTEDIT 控件。整个系统的四个模块是一个数据处理过程,首先由数据处理模块对数据处理,再由模型分析和三维显示进行特定的操作,最后经报表输出模块输出文字性结果。为了满足用户不同查询需要、还加入了 SQL 查询,这个功能是调用了 MAPGISBASCOM1.DLL 中的 QUERY 对象。系统主界面2.3.1、数据处理 该模块主要对数据进行各种后期处理,除了包括放大,缩小,漫游,复位等常见功能外,还4可以进行数

10、据的修改,如点,线,面的输入,保存,删除。但最主要的是属性数据与空间数据的联动以及 SQL 查询,可以进行动态浏览。为后面的模型分析和报表输出提供数据支持。多窗口据处理模块界面图形编辑功能5属性数据显示2.3.2、模型分析 该模型是本系统的主要功能所在,也是对汾河上游项目提供技术支持的核心,主要包括缓冲区分析,坡度坡向分析,适应性分析,发展预测,对比分析。比如缓冲区分析,在确定了目标点和半径后就可以求出影响范围,这在污染源分析中很重要,再将结果和市区图等叠加就可以直观地表现影响范围。缓冲区分析62.3.3、三维显示该模块用于生成 TIN,GRID 格式的文件,并可以打开 TIN,GRID 格式

11、的文件,通过“三维图形显示”可以直观地浏览 DEM 的三维图像。还可以与其它专题图叠加,但现在版本的 MAPGIS开发工具还没有这个功能,希望 7.0 版能完善 EDITVIEW 控件的三维显示功能。GRID 处理TIN 处理2.3.4、报表输出本模块主要用于生成并打印各种表格,相关信息,数据汇总统计以及各种专题图。2.4 系统实现MAPGIS 组件不依赖于某一种开发语言,它可以直接嵌入到通用的开发环境(如 VISUAL 7BASIC 或 VC+)中实现 GIS 功能。通过调用 MAPGIS 组件的基本功能,并结合其他专业模型和专业模型分析控件,可以快速地开发 GIS 应用程序,这就大大降低了

12、 GIS 应用系统的开发难度与开发成本。利用 MAPGIS 组件开发平台进行 GIS 应用程序的开发主要分以下几个步骤进行:(1) 选择应用系统的开发工具,如 VB;(2)将使用到的 MAPGIS 组件引用到应用程序中;(3)调用 MAPGIS 组件的属性和方法完成 GIS 基本功能;(4)开发应用系统专用的功能。 WINDOWS 文件与 MAPGIS 组件对应关系WINDOWS 文件 MAPGIS 组件(控件)MapGisBasCom1.dl 数据管理组件MapGisDspCom.dll 图形显示组件MapGisLayerCom.dll 图层管理组件MapGisMapCom.dll 地图管理

13、组件 / 图例管理组件MapGisDBSCom.dll 图库管理组件MapGisRasterCom.dll 图像分析管理组件EditView.ocx 图形编辑控件MapTree.ocx 工程管理控件GisAttEdit.ocx 属性编辑控件AttStruEdit.ocx 属性结构编辑控件GIS 通用功能组件(控件)集合提供了 MAPGIS 平台的通用处理功能。通用功能组件基于数据管理组件构造而成,它们具有面向通用 GIS 功能;图形显示对象 MAPGISDC 封装了 MAPGIS 的基本显示操作;图层对象 Layer 封装了点、线、区、网文件的数据管理功能;地图对象 Map 封装了对 MAPG

14、IS基本图形的编辑/输出操作和对多个图层的管理功能;图例对象 Legend 封装了点、线、区图例元素的管理和操作功能,并提供了管理图例文件存储和图例元素的功能;MSI 对象封装了对图像工作区的操作和显示,并提供了矢量数据和栅格数据的相互转换功能;DBS 对象封装了操作和显示图库工作区的方法。同时, MAPGIS 组件开发平台还提供了几个可视化控件 EditView 控件对象,包括点编辑、线编辑、区编辑、数字化、矢量化及其他操作功能;MapTreeCtrl 控件对象封装了与 Map 对象的交互操作功能;GisAttEdit 控件对象主要用来浏览和编辑 MAPGIS 属性数据; AttStruEd

15、it 控件对象主要用来浏览和编辑 MAPGIS 属性结构。首先将需要的组件和控件在 WINDOWS 注册表或 REGSUV 命令进行注册,这样就可以像使用普通 VB 的 ACTIVE X 控件一样使用 MAPGIS 控件了。系统部分 VB 代码:数据处理模块该函数用来打开文件,可以是点,线或面。Public Function loadfile(ByVal aiType As Enum_Area_Type)Dim pntai As PntAreaDim linai As LinAreaDim regai As RegAreaDim myform As New frmDocumentloadfil

16、e = 0Select Case aiType8Case gisPNT:Set pntai = New PntAreaIf pntai.Load Thenloadfile = 1myform.aiType = gisPNTSet myform.Ai = pntaimyform.EditView1.PntArea = pntaimyform.EditView1.SetWinMapRange pntai.rect.xmin, pntai.rect.ymin, pntai.rect.xmax, pntai.rect.ymaxEnd IfCase gisLIN:Set linai = New LinA

17、reaIf linai.Load Thenloadfile = 1myform.aiType = gisLINSet myform.Ai = linaimyform.EditView1.LinArea = linaimyform.EditView1.SetWinMapRange linai.rect.xmin, linai.rect.ymin, linai.rect.xmax, linai.rect.ymaxEnd IfCase gisREGSet regai = New RegAreaIf regai.Load Thenloadfile = 1myform.aiType = gisREGSe

18、t myform.Ai = regaimyform.EditView1.RegArea = regaimyform.EditView1.SetWinMapRange regai.rect.xmin, regai.rect.ymin, regai.rect.xmax, regai.rect.ymaxEnd IfCase ElseEnd SelectIf loadfile Thenmyform.Showmyform.EditView1.RestoreWindowmyform.EditView1.DspBigCross = FalseElseSet myform = NothingEnd IfSet

19、 pntai = NothingSet linai = NothingSet regai = NothingEnd Function9SQL 过程Private Sub sql_Click()Dim objQuery As New MAPGISBASCOM1Lib.QueryDim regnum As LongDim objIDList As New IDListobjQuery.sourceArea = linaiEditView1.FlashElementSet objIDList = objQuery.AttAskToList(gisREG_ENTITY)If Not objIDList

20、 Is Nothing ThenFor regnum = 0 To objIDList.Count - 1EditView1.GotoElement linai, objIDList(regnum), gisREG_ENTITYGisAttEdit1.GotoAtt objIDList(regnum)Debug.Print objIDList(regnum)Next regnumEnd IfSet objIDList = NothingEnd Sub三维模块Dim iTinLayer As New MAPGISTINCOMLib.TinLayerDim iTinArea As MAPGISTI

21、NCOMLib.TinAreaDim iLin As New LinAreaDim iPnt As New PntAreaDim demInfo As New DemInfoStruPublic DspMyDraw As IntegerDim res As BooleanPrivate Sub about_Click()MsgBox “版本 “ & App.Major & “.“ & App.Minor & “.“ & App.Revision & “作者 左海龙“End SubPrivate Sub close_Click()Unload Form2End SubPrivate Sub co

22、ntent_Click()MsgBox “请向左海龙购买正版软件“End SubPrivate Sub EditView1_MyDraw(ByVal MpDC As Object)Dim mdc As MapGisDCSelect Case DspMyDrawCase 0:10Exit SubCase 1:If iLin.Empty ThenMsgBox “未打开线文件“Exit SubElseSet mdc = MpDCmdc.DispArea iLinEnd IfCase 2:Set mdc = MpDCiTinLayer.Display mdcCase 3:If iPnt.Empty T

23、henMsgBox “未打开点文件“Exit SubElseSet mdc = MpDCmdc.DispArea iPntEnd IfCase Else:MsgBox “非法的类型!“Exit SubEnd SelectSet mdc = NothingEnd SubPrivate Sub Form_Load()Form_ResizeEnd Sub页面重画函数Private Sub Form_Resize()EditView1.Height = 9500EditView1.Width = 15600End SubPrivate Sub open_Click()Set iTinArea = iTinLayer.TinAreares = iTinArea.loadfile()If res = False ThenMsgBox “打开高程文件失败!“Exit Sub

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 课程笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。