第十一章 GIS组件开发
- 格式:ppt
- 大小:1.28 MB
- 文档页数:124
GIS设计和开发gis设计与开发Gis设计与开发思路现实需求、GIS概念模型、机理过程、人机交互系统、现实需求开发方式:独立开发,扩展式二次开发,集成式二次开发第一章GIS设计思想内容,标准(一)GIS设计目标通过改进系统设计方法,严格执行开发的内容划分,进行阶段质量把关以及做好项目建设的组织管理工作,从而达到增强系统的实用性,降低系统开发和应用的成本,延长系统生命周期的目的。
(二)GIS设计的特点1、数据:数据量大,实体种类繁多、实体间关联复杂的特点2、功能:GIS设计以空间数据为驱动3、工程:GIS工程投资大,周期长,风险大,涉及部门繁多二gis设计的理论基础Gis工程学:GIS本身发展和将系统工程学思想引入GIS设计的产物(一)GIS工程学体系1、任务:寻求系统总体最优化2、基础理论:(1)系统学思想(整体性,层次性,相关性,功能性,动态性),(2)系统工程学(3)软件工程学(4)地理信息科学三层次(理论,技术,应用)3、方法论:根据GIS工程学的基础理论而形成的一系列程序化的基本操作技术与方法(二)GIS工程学的特点1、以空间信息系统工程优化为目的2、横跨多学科3、直接面向决策,为可持续发展提供决策支持4、与GIS产业化密切相关三GIS设计的内容(一)设计原则:标准化,先进性,兼容性,高效性,可靠性通用性(二)设计内容软件设计和数据库设计第二章gis设计的方法一、结构化生命周期法1、结构化生命周期法又称结构化分析和设计方法,又称结构化系统开发方法结构化生命周期法是系统分析员,软件工程师,程序员以及最终用户按照用户至上的原则,自顶向下分析与设计和自底向上逐步实施建立计算机系统的一个过程,是组织,管理和控制信息系统的开发过程的一种基本框架。
2、基本思想:(1)要求设计过程必须严格按照阶段进行(2)在系统建立之前就必须严格的定义和描述用户的需求。
3、阶段划分:(1)系统开发的准备阶段(2)调查研究及可行性研究阶段(3)系统分析阶段(4)系统设计阶段(5)系统实施阶段(6)系统维护和评价阶段4、特点:(1)预先明确系统的需求,根据需求来设计系统(2)自顶向下来设计和规划信息系统(3)运用分解和协调技术,使复杂系统简单化(4)严格按阶段进行开发(5)强调阶段成果的审定和检验(6)文档的标准化和规范化5、优缺点:优点:(1)阶段的顺序性和依赖性、(2)从抽象到具体,逐步成精、(3)系统分析与系统设计分开、(4)质量保证措施完备。
浅谈组件式GIS技术及其开发发表时间:2018-10-17T10:24:57.480Z 来源:《电力设备》2018年第19期作者:杨德伦[导读] 摘要:传统GIS虽然在功能上已经比较成熟,但是由于这些系统多是基于十多年前的软件技术开发的,属于独立封闭的系统。
(国网福建检修公司福建福州 350011)摘要:传统GIS虽然在功能上已经比较成熟,但是由于这些系统多是基于十多年前的软件技术开发的,属于独立封闭的系统。
同时,GIS软件变得日益庞大,用户难以掌握,费用昂贵,阻碍了GIS的普及和应用。
组件式软件是新一代GIS的重要基础,组件式GIS的出现为传统GIS面临的多种问题提供了全新的解决思路。
关键词:组件技术;GIS技术;电力系统 1.组件技术简介组件是模块化程序设计方法发展到一定阶段的产物,在软件工程的角度来考虑,一个庞大的应用程序通常被划分成多个模块。
每个模块都保持一定的功能独立性,这些组件可以单独开发、编译,甚至单独调试和测试。
当所有的组件开发完成后,把他们组合在一起就得到了完整的应用系统。
我们把每一个这样的模块称之为组件。
基于组件开发不只是一种分布计算新技术,而是一种广泛的体系结构,支持包括设计、开发和部署在内的整个软件生命周期计算的理念。
基于组件开发具有高度的重用性和互用性,其两个重要规范分别是Microsoft的COM和OMG的COBRA,目前Microsoft的COM占市场领导地位,已经得到广泛应用,并逐渐成为业界事实标准。
基于COM,Microsoft推出ActiveX技术,ActiveX组件是当今可视化程序设计中应用最为广泛的标准组件。
组件技术使近二十年来兴起的面向对象技术进入到成熟的实用化阶段。
在组件技术的概念模式下,软件系统可以被视为相互协同工作的对象集合,其中每个对象都会提供特定的服务,发出特定的消息,并且以标准形式公布出来,以便其他对象了解和调用。
组件间的接口通过一种与平台无关的语言IDL(Interface Define Language接口定义语言)来定义,而且是二进制兼容的,使用者可以直接调用执行模块来获得对象提供的服务。
《组件式GIS软件开发实验》教学大纲(2021年9月)实验课程名称:组件式GIS软件开发实验课程编号:00920210课程性质:独立设置一、学时学分:实验课学分:1;实验课学时:32二、适用专业与开课学期:地理信息系统专业,第5学期三、实验教学目的和大体要求组件式GIS软件开发实验的要紧内容包括ArcGIS Engine及Visual Studio 2020开发环境设置、地图显示与阅读等利用ArcGIS Engine进行GIS软件二次开发方面的实验。
通过实验教学,应使学生同意大体实验理论和操作技术的训练,把握基于ArcGIS Engine进行GIS软件二次开发的知识和经常使用技术,能正确运用相关知识和技术进行大体的GIS软件设计与编码;并能对实验结果做出正确的分析和判定,能写出符合要求的实验报告。
用实验的方式去学习与实践GIS软件设计及编程,应用所学得的理论知识指导实验,从理论和实验的结合上加深、扩展对GIS软件设计及编程的熟悉,增强理论联系实际,提高学生的实验能力。
学生通过本门课程的学习,能够了解基于ArcGIS Engine进行GIS软件二次开发的大体内容,把握经常使用的编程方式,把握初步的GIS软件设计与编程技术,具有必然的GIS软件二次开发能力。
四、课程内容与具体要求实验一 ArcGIS Engine及Visual Studio 2020开发环境设置( 2学时)实验类型:基础性实验目的:(1)了解并熟悉Visual Studio 2020软件开发环境,能够利用C#语言进行大体的软件开发工作,并对开发资源能够熟练运用。
(2)了解并把握基础的基于ArcGIS Engine的编程方式及步骤。
(3)把握并能够熟悉运用ArcGIS Engine的开发资源。
要紧仪器:PC机实验内容:(1)安装Visual Studio 2020软件开发环境。
(2)安装ArcGIS Engine软件。
(3)利用C#语言成立一个最大体的ArcGIS Engine应用程序。
ATL应用实例——基于ArcGIS组件式开发ATL应用实例——基于ArcGIS组件式开发创建ATL工程1.在File菜单下,单击“New”命令。
在Projects属性页中选择“ATL COM AppWizard”,并填写工程名称和路径;2.不做任何修改,单击“Finish”;3.核对工程信息,单击“OK”。
设置编译环境1.设置Unicode字符集的调试环境为“Win32 Unicode Debug”;2.在Project菜单下,单击“Setting”命令。
切换至Debug属性页,设置“Executable fordebug session”项,选择希望调用组件的程序。
创建ATL对象1.在ClassView视图中右键工程,单击“New ATL Object”;2.选择“Simple Object”;3.在Names属性页的ShortName中输入名称,前面不需要加“C”或“I”之类的前缀;4.在Attributes属性页中修改以下内容,点击“确定”。
实现ICommand接口1.在ClassView视图中右键类对象,单击“Implement Interface”;2.选择“ESRI SystemUI Object Library(1.0)”,单击“OK”;3.选择“ICommand”,单击“OK”。
修改ICommand接口的定义和实现1.在ClassView视图中双击类对象,打开组件类头文件(ZoomIn.h);2.找到ICommand接口的定义代码段,如下所示:STDMETHOD(get_Enabled)(VARIANT_BOOL * Enabled){if (Enabled == NULL)return E_POINTER;return E_NOTIMPL;}3.切换至组件类实现文件(ZoomIn.cpp),并将头文件中的代码段复制过来;4.将复制过来的代码段稍作修改,修改之后如下所示:STDMETHODIMP CZoomIn::get_Enabled(VARIANT_BOOL * Enabled){if (Enabled == NULL)return E_POINTER;return E_NOTIMPL;}5.切换至组件类头文件(ZoomIn.h),删除代码段中的实现体,并在定义最后加上分号,如下所示:STDMETHOD(get_Enabled)(VARIANT_BOOL * Enabled);6.重复上面的步骤,完成ICommand接口中其它方法和属性的修改。
GIS系统的开发与设计GIS系统(Geographic Information System,地理信息系统)是一种利用计算机技术对空间数据进行处理、分析和展示的系统。
在现代社会中,GIS系统已经成为地理信息科学领域不可或缺的工具之一,广泛应用于城市规划、环境保护、农业、气象、资源勘测等领域。
GIS系统的开发与设计是一个综合性的工作,需要涵盖地理信息学、计算机科学、数学等多个学科的知识。
本文将从GIS系统的概念、功能、开发步骤和设计原则等方面进行详细介绍。
一、GIS系统的概念和功能GIS系统是一种基于地理数据的信息管理系统,它能够对地理空间数据进行采集、存储、管理、处理、分析和展示,从而为用户提供决策支持和空间信息服务。
GIS系统的主要功能包括数据输入、数据管理、数据分析、数据输出等。
具体而言,GIS系统可以实现以下功能:1.空间数据采集:通过地图、卫星影像等形式,收集地理空间数据。
这些数据包括地表土地利用、地形高程、水系河流等信息。
2.空间数据存储:将采集到的地理空间数据存储在数据库中,以便随时查阅和利用。
3.空间数据管理:对存储在数据库中的地理空间数据进行组织、更新、维护、查询等操作,保证数据的完整性和准确性。
4.空间数据分析:通过空间分析功能,实现对地理空间数据进行统计、空间关联、空间模式识别等分析,从而发现数据之间的空间关系。
5.空间数据输出:将分析结果通过地图显示、统计报表等形式输出,为用户提供具体的空间信息和决策支持。
二、GIS系统的开发步骤开发一个GIS系统需要经过几个步骤,包括需求分析、功能设计、系统开发、测试与验收等过程。
下面将详细介绍GIS系统的开发步骤。
1.需求分析:首先需要明确用户对GIS系统的需求,包括功能需求、性能需求、安全需求等。
通过需求分析,确定GIS系统的具体功能和特点。
2.功能设计:根据需求分析的结果,设计GIS系统的功能模块和流程。
确定数据输入、数据管理、数据分析和数据输出等功能,并建立各个功能模块之间的关系。
基于GIS组件技术的软件开发摘要:分析了GIS的功能组件MapX的主要框架和功能,旨在探讨如何在Visual C ++析功能的MapX技术构建专用电子地图。
结果表明,在GIS组件的软件开发中,采用VC ++MapX的地理信息系统(GIS)开发技术相结合来开发电子地图,既方便灵活,又增强了软件的功能和可视效果。
关键词:MapX组件;电子地图;地理信息系统0 引言GIS是地理信息系统(Geographical Information System)的简称,是一种将空间位置信息与属性数据相结合的系统。
在实际应用中,以GIS技术为基础的应用软件已广泛用于军事、商业、航空等多种领域。
MapX是MapInfo公司提供的数字地图绘制控件,是一组基于GIS技术的应用组件,它由一个称为Map的ActiveX 控件(OCX)和约45个自动化对象组成,在标准的Windows编程环境下,能够与其他图形、多媒体、数据库开发技术组成完全独立的综合性应用软件,是基于前端应用业务的良好的地图开发环境。
使用MapX进行软件开发,可以向应用程序中添加强大的地图绘制功能,增强软件的空间分析能力。
1 MapX控件基础1.1 MapX的结构分析从横向分析,MapX是空间索引与空间实体相结合的一种结构,空间实体是地理图形信息的一种抽象模型,包括点、线、面3种类型。
任何点、线、面实体都可以用直角坐标点x、y来表示。
点可以表示成一组坐标(x,y),对于线和面,则均被表示成多组坐标(x1,y1,x2,y2,...,xn,yn);空间索引是查询空间实体的一种机制,通过空间索引,就能够以尽量快的速度查询到给定坐标范围内的空间实体及其所对应的数据;从纵向分析,MapX的空间数据结构是一种分层存放的结构。
如图1。
1.2 MapX的模型结构MapX组件的基本构成单元是Object(单个对象)和Collection(集合)。
其中,集合包括对象,是多个对象的组合。
VB开发示例MapGIS组件的使用方法与一般组件的使用方法完全相同,在使用MapGIS组件之前,必须先注册.安装完MapGIS的SDK开发包后,自动安装并注册了MapGIS组件.在VB中使用MapGIS组件对象的步骤是:(1)嵌入MapGIS对象类型库;(2)建立MapGIS对象;(3)调用MapGIS对象和其他VB对象的方法和属性完成GIS应用软件功能;(4)释放MAPGIS对象.下面的例子演示了如何使用MAPGIS组件(控件)进行GIS应用软件的开发.(1)新建一个VB工程(标准EXE类型),“引用”程序中用到的组件和控件.为了使VB能够访问MAPGIS组件对象,需要在VB项目中嵌入MAPGIS对象类型库.执行下列步骤:从Project (工程)菜单中选择References(引用), References对话框出现后,选中所需的类型库:MapGISBasCom11.o Type Library和MapGISDspCom1.0 Type Library。
(如下图)再从Project (工程)菜单中选择Components (组件), Components对话框出现后,选中所需的控件,EditView ActiveX Control module是图形编辑控件。
(如下图)(2)添加EditView控件到Form上,命名为EditView将区文件、线区文件或点区文件加载到EditView有两中方法,一是将区文件直接用Load 方法,然后调用 Set EditView.RegArea = objRArea,二是用工程Map的形式加载,此处用方法二。
定义一个全局的MapPublic g_objPrjMap As MAPGISMAPCOMLib.Map在Form Load的时候,将 g_objPrjMap 赋给 EditView.MapSet EditView.Map = g_objPrjMap接下去就是把区文件绑定到Map上,见下面函数:(此处以区为例)Public Function AddLyrToMap(strLyrPath As String, strLyrName As String)Dim objAddWArea As MAPGISBASCOM1Lib.WorkAreaDim objRArea As New MAPGISBASCOM1Lib.RegAreaDim objMapLyr As MAPGISLAYERCOMLib.MapLayerIf Not objRArea.Load(strLyrPath) ThenMsgBox "加载" & strLyrPath & "目录下的图层出错!", vbInformation, "系统提示" Exit FunctionEnd If = strLyrNameSet objAddWArea = objRAreaSet objMapLyr = New RegLayerg_objPrjMap.AddLayer objMapLyrg_yer(g_objPrjMap.MapLayerCount-1).Attach objAddWAreaSet objAddWArea = NothingSet objRArea = NothingSet objMapLyr = NothingEnd FunctionAddLyrToMap函数可以这样调用:Call AddLyrToMap(App.Path & "\Data\ST_XZQ.WP", "行政区") '添加行政区图层加载完地图后,要将地图复位:'将Map全部显示Public Sub RestoreEditView()Dim objTempLyr As MAPGISLAYERCOMLib.MapLayerDim objRC As MAPGISBASCOM1Lib.D_RectDim i As IntegerSet objTempLyr = g_objPrjMap.FindFirst(gisFINDTYPE_ALL)If objTempLyr Is Nothing Then Exit SubSet objRC = objTempLyr.rectFor i = 0 To g_objPrjMap.MapLayerCount - 1If (Not objTempLyr.WorkArea.Empty) And (objTempLyr.WorkArea.logCount > 0) ThenIf (objRC.xmin > objTempLyr.rect.xmin) ThenobjRC.xmin = objTempLyr.rect.xminEnd IfIf (objRC.xmax < objTempLyr.rect.xmax) ThenobjRC.xmax = objTempLyr.rect.xmaxEnd IfIf (objRC.ymin > objTempLyr.rect.ymin) ThenobjRC.ymin = objTempLyr.rect.yminEnd IfIf (objRC.ymax < objTempLyr.rect.ymax) ThenobjRC.ymax = objTempLyr.rect.ymaxEnd IfEnd IfSet objTempLyr = NothingSet objTempLyr = g_objPrjMap.FindNext()NextfrmMapWin.EditView.SetWinMapRange objRC.xmin, objRC.ymin, objRC.xmax, o bjRC.ymaxfrmMapWin.EditView.RestoreWindowSet objTempLyr = NothingSet objRC = NothingEnd Sub(3)得到统计区的属性值、面积等由于区文件是以工程Map的形式绑定上来的,所以要取得区的属性,就要先得到工程Map 里的MapLayer,然后在得到RegArea,具体见下面函数:Private Sub Command1_Click()Dim i As IntegerDim dblArea As Double '统计面积Dim objMapLay As MAPGISLAYERCOMLib.MapLayerDim objRArea As New MAPGISBASCOM1Lib.RegAreaDim objRecd As MAPGISBASCOM1Lib.RecordSet objMapLay = New MAPGISLAYERCOMLib.RegLayerSet objMapLay = g_objPrjMap.FindLayerByName("行政区")Set objRArea = objMapLay.WorkAreaFor i = 0 To objRArea.Count - 1If (objRArea.RegAtt.Get(i, objRecd)) > 0 ThenDebug.Print objRecd.Item("XZQ_DM").ValueDebug.Print objRecd.Item("XZQ_DM").ValuedblArea = dblArea + objRecd.Item("Area").Value End IfNextDebug.Print dblAreaEnd Sub(4)最后要释放MAPGIS对象Set g_objPrjMap = Nothing这个就是一个最基本的MapGIS程序了,可以把它称为“MapGIS的基石”,因为以后的程序都是在这个程序的基础上“缝缝补补”而来的。
信息:信息是用文字、数字、符号、语言、图像等介质对事件、事物、现象等的内容、数量或特征的表示。
数据(Data):通过数字化或直接记录下来的可以被鉴别的符号,是用以载荷信息的物理符号,在计算机化的地理信息系统中,数据的格式往往和具体的计算机系统有关,随载荷它的物理设备的形式而改变。
数据和信息的关系:数据是一种未加工的原始资料,是一种载存信息的物理符号,是信息的载体和表达;而信息则是数据的内容和解释。
地理信息:是与研究对象的空间地理分布有关的信息。
它表示物体及环境固有的数量、质量、分布特征、联系和规律。
系统:由若干个相互联系、相互制约的部分(元素)组成的具有特定功能的有机整体。
信息系统:能对数据和信息进行采集、存储、加工和再现,并能回答用户一系列问题的系统称为信息系统。
地理信息系统概念:用于采集,模拟,处理,检索,分析和表达地理空间数据的计算机系统。
(在计算机硬件软件系统支持下,对整个或部分地球表面空间中有关地理分布数据进行采集,储存,管理,分析和描述的技术系统。
)地理信息系统的功能:数据的采集与编辑,数据处理,数据的存储与组织,空间查询与分析地理信息系统设计的基本思想和要求地理信息系统以数字世界表示自然世界,具有完备的空间特征,可以存贮和处理不同发展时期的大量地理数据,并具有极强的空间系统综合分析能力,是服务于地理科学研究和应用的新技术,是地理学现代化的重要手段。
GIS开发研究的四个阶段:系统分析(初步调查,可行性分析,领导批准,收集数据,数据组织方案,提出初步模型),系统设计(用户同意领导批准,总体设计,详细设计),系统实施(用户同意领导批准,编写程序,调试,编写技术文件,系统运行),系统维护及评价(系统维护,系统评价,指出问题。
)地理信息系统设计要满足的三个基本要求加强系统的实用性,降低系统开发和应用的成本,提高系统的生命周期系统设计要根据设计原理,采用结构化分析方法结构化----有组织,有计划,有规律的一种安排结构化系统分析方法----利用一般系统工程分析法和有关结构概念,把它们应用于地理信息系统的设计,采用自上而下划分模块,逐步求精的系统的分析方法。