第十一章 GIS组件开发
GIS设计和开发

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 应 用 开 发

Python 窗口
➢ ArcGIS 10使用 Python 窗口代替原来的命令行窗口, 通过 Python窗口,用户可以快捷地在 ArcGIS 内部使用 Python,从可而以以直交接互从方式运行地理处理工具和功能以及 充分利用C其at他aloPgy中th拖on放模块和库。此窗口还为用户学习 Python 提供了过一来个途径。
§1.1 ArcGIS Desktop及其扩展
ArcGIS Desktop是GIS专业人员编辑、使用和管理 地理信息的主要平台,它按功能分为三个不同级 别的产品:
1. ArcView 2. ArcEditor 3. ArcInfo
每个产品主要包括:ArcMap、ArcCatlog、 ArcGlobe、ArcScene桌面应用程序.
1. ArcGIS Desktop 2. ArcGIS Engine 3. ArcGIS Server 4. ArcGIS Mobile
✓ 开发类型:
✓ To customize or extend the ArcGIS Desktop applications ✓ To build standalone mapping applications ✓ To develop Web applications
ArcPy详细参考: ArcGIS Desktop 10帮助— 专业库—地理处理—ArcPy 站点包
ArcPy 模块
➢模块为通常包含函数和类的 Python 文件。有一 系列模块支持 ArcPy,包括制图模块 (arcpy.mapping)、Spatial Analyst 模块 (arcpy.sa) 和Geostatistical Analyst 模块 (arcpy.ga)。
使用DLL组件扩展ArcGIS桌面的优势:
GIS软件开发

主要数据结构
第一章 GIS软件界面设计
面 1.1 GIS软件界面的重要性 向 对 象 界面就是用户与系统的通讯(Communication),而通讯依赖于环境 (Context),软件中包含复杂的环境,用户必须去学习以理解系统, 的 GIS
按要求进行输入以获得相应的输出(表现)和文档等(Andrew U.Frank, 1991)。 程 GIS的一个主要目的让用户与现实世界的现象进行交互,如果真的如此, 那么作为用户和现实世界中介的系统将是恰如其分的(Mark,1989)。 序 GIS应该提供给用户一种方法使其在办公室或实验室体验地理现象、解 设 决地理问题。坐在终端面前的用户在使用GIS时所思考的问题是关于真 计 实世界的现象,而非计算机、数据结构或者GIS命令。 武 用户界面的质量在GIS软件使用中已经占据着重要的地位,然而由于用 汉 户界面在GIS软件中没有得到足够的重视。为了提高GIS的使用效率,用 大 学 户界面为用户提供了一种访问空间数据的简单的概念模型。用户界面必 资 须做到简单、易学,以及与复杂的软件底层数据结构和算法相独立。 环 蔡 境 GIS的用户界面给用户展现的是系统的界面而不是系统的数据本身。 忠 学 (David Lanter,1991) 亮 院
第三章 视图管理模块开发
面 向 3.1 与图形显示相关的MFC类 对 象 其他绘图类操作函数 的 选用绘图设备对象 程 序 设 计
武 汉 大 学
资 环 蔡 境 忠 学 亮 院
GIS
SelectStockObject() SelectObject() 绘图属性设置函数 设置或获取背景颜色 –SetBkColor() –GetBkColor() 设置或获取背景模式 –SetBkMode() –GetBkMode() 设置或获取绘制模式 –SetROP2() –GetROP2()
组件式GIS开发技术研究——以MapObjects为例

现 了董浜镇 规划 成果 的管 理 。通过 地 理信 息 技术 的可 视 化 手段 , 达到 常 熟 市 董 浜镇 属 性 数 据 和 董 浜 镇 地 理 空 间
数 据相 结合 的 目的 。
散布置, 不利于基础设施的经济供给 , 虽然建筑质量普遍 较好 , 但整体居住环境较差有 待改善。农村住宅按照年
S a g a 0 0 2 hn ) h n h i 0 6 ,C ia 2
Ab t a t h s p p r ito u e h e n t n,t e d v lp n d la d t e c a a tr t fC mG S,t e nr d c d Ma Ob s r c :T i a e n r d c d t e d f i o i i h e e o me t mo e n h h r ce si o o I i c h n it u e p — o
第3 4卷 第 2期
21 0 1年 4 月
测 绘 与 空 间 地 理 信 息
G MA I s & S AT A NF MAT ON E HNO O Eo TC P I L I OR I T C L GY
V 13 N . o . 4, o 2 Ap . 01 r ,2 1
组 件 式 GI S开 发 技 术 研 究
间查询分析 、 图层 渲染、 图形格 式转换 等功能 , 能够有效服 务于董 浜镇村镇布局规划 。 关键词 : 地理信 息 系统 ; p bet; MaO jc 村镇布局规 划 ; s 董浜镇 中图分类号 :2 8 P 0 文献标识码 : B 文章编号 :6 2— 87 2 1 )2— 17— 3 17 5 6 (0 10 0 2 0
代 划分 , 目前现 存 的农 民住 宅分 为两 种 : 多建 于 8 一种 0年 代末 9 0年代 初期 , 构较 为简 单 , 结 公共设 施 和基 础设施 配 套 不全 ; 一种 为 近期 建造 的农 民拆迁 房 , 另 多为 独 门独 院 的农 民别 墅 , 础设 施 配套 较 为 齐全 。由于 未 统一 规 划 , 基 居住 的外 部环 境较 差 … 。 系统 目标 是开 发一 个 通用 的常 熟市 董 浜 镇规 划 成 果 管理 地理 信息 系统 , 并具 有 浏 览 、 辑地 图 的功 能 。系 统 编 利用 地理 信 息 系统 以及 相 关 技 术 , 结合 常熟 市 董 浜镇 并 村镇 布局 规划 的具 体 情 况 和 相 应 的 规 划 文 本 , 效 地 实 有
浅谈组件式GIS技术及其开发

浅谈组件式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接口定义语言)来定义,而且是二进制兼容的,使用者可以直接调用执行模块来获得对象提供的服务。
CHAP01_GIS开发与组件式GIS

1.4 组件式GIS开发设计
1.4.1 组件式GIS的基本结构
数据访问组件 数据桥 可视化组件 地图显示 空间对象 可视化编辑 属性数据编辑 核心功能组件 空间查询 投影变换 数据 导入/导出 空间分析 数据 格式转换 其他… 其他… 数据缓存 数据源 空间数据库 文件数据
Copyright © 2014 HHU All rights reserved.
1-2
1.1 GIS开发与集成
1.1.2 GIS开发模式
独立开发:不依赖于任何GIS工具软件,从空间数据的采集、编辑到数
据的处理分析及结果输出,所有的算法都由开发者独立设计,然后选用某 种程序设计语言,在一定的操作系统平台上编程实现。
单纯二次开发:完全借助于GIS工具软件提供的开发语言(宏语言)进
组件式GIS特点
系统小巧、价格低廉 开发简捷、易于集成 功能强大、扩展性强
组件式GIS研究面临的问题
运行效率 功能强弱
网络化、分布式、集成化
Copyright © 2014 HHU All rights reserved.
Introduction to Programming ArcGIS Using C#
1.5.2 ESRI
MapObjects
(ActiveX Control)
可以嵌入支持COM的开发工具,如VC、VB甚至PowerPoint。
ArcView GIS
内置开发工具Avenue, 一种面向对象的开发语言。
Copyright © 2014 HHU All rights reserved.
Introduction to Programming ArcGIS Using C#
组件式GIS软件开发实验教学大纲

《组件式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应用程序。
arcgis 开发教程

二 创建桌面应用程序
5.加载MXD地图文档数据-1
二 创建桌面应用程序
6.创建第一个ArcGIS Engine桌面应用程序-2
1. 动Visual Studio .NET,并从新建项目对话框中创建一个新的Visual C# “Windows应用程序”项目。 2.将项目命名为“DEMO”,并选择位置存取该项目。 3.在“工具箱”的“Windows窗体”标签栏中单击右键,然后从上下文菜 单中 选择“选择项”(VS2005)“添加/移除项(I)…”(VS2003);或者工具->选 择工具箱。 4.在“选择工具箱”中选择“.NET Framework组件”,并复选“ AxMapControl”,“AxPageLayoutControl”,“AxTOCControl”和“ AxToolbarControl”,单击确定按钮。这样所选择的控件将显示在工具箱的
一 使用ArcEngine控件开发
2. MapControl和PageLayoutControl
• MapControl和PageLayoutControl对应于ArcMap桌面应用程 序的“数据”和“布局”视图。用ArcMap创作的地图文 档可以装载到这两个控件中。 • 地图文档可在设计时通过这两个控件的属性页设置,控件 可以被设置为“链接”或“包含”地图文档;地图文档也 可以使用LoadMxFile方法通过编程装载到控件中。 • MapControl和PageLayoutControl不仅可以读取地图文档, 还可以写入地图文档(*.mxd)。
}
二 创建桌面应用程序
6.创建第一个ArcGIS Engine桌面应用程序-2
private void Form1_Load(object sender, EventArgs e) { string filename ="E:\\上课资料\\测绘08-GIS开发\\map\\SD.mxd"; if ( axMapControl1.CheckMxFile (filename) )
组件式GIS二次开发

4.9 属性查询
.SearchByDistance()函数的用法
Set variable = object.SearchByDistance( shape, tolerance, expression) .
FlashShape()函数的用法 object.FlashShape shape, nTimes MXFlexGrid控件的使用
注意!
在将对象的引用赋给变量、数据类型的元 素或可写对象的属性时,须使用关键字 “set”; 在创建对象类的实例时,须使用关键字 “new”。
4.2地图放大、缩小、漫游等操作
Map1.Extent Map1.pan set map1.extent = map1.fullextent
4.3 打开影像文件
4. 功能的实现
4.1.打开shp文件
1)学会使用CommonDialog控件 2)学会简单错误处处理方法
3)学会从全路径中截取文件名称的方法
4)学会从全路径中截取目录的方法
学会 .DataConnection 的定义和使用方法 学会.Database的定义和使用方法 学会.GeoDataset的定义和使用方法 学会.FindGeoDataset的定义和使用方法 学会.Layers.Add的定义和使用方法
3.2 Shp文件
ESRI Shapefiles use a simple, nontopological format for storing the geometric location and attribute information of geographic features.
ShapeFile文件通常包含三个文 件:.shp .shx .dbf,.shp存储了图元图形坐标数据,.dbf 存储了图元属性数据,.shx存储了每个图元记录在.shp文件 中的位置。同时.shp .shx .dbf记录顺序是一致的。在GIS 中,总体上有两种类别的查询: 图元查属性,就是通过对图元.shp文件的查询,定位到 对应的.dbf属性数据记录。而对.shp的查询,需要对图形建 立空间索引,以便加速图元查找的速度。确定需要查找的图 元在.shp中的记录位置,以确定是第多少条记录,由于三文 件记录顺序是一致的,同时.dbf记录是等长的,可以迅速通 过计算得到对应的图元属性数据所在的位置,读取属性数据 即可。
ATL应用实例——基于ArcGIS组件式开发

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系统的开发与设计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组件技术的软件开发摘要:分析了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(集合)。
其中,集合包括对象,是多个对象的组合。
Part2 组件式GIS开发

21
End, Thanks!
19
ODE (Open Development Environment)
是在ArcGIS组件技术的基础上提供给用户的一种新的开发 方式。 开发人员可在C#.net、、VC、Delphi等开发环境中 通过ActiveX控件与ArcGIS打交道。它为开发者提供的是 一组可编程的对象,包括可视的用户化控件。 开发人员在开发时采用C#.net、、VC、Delphi或类 似的高级开发语言,引用组件对象进行编程,创建动态连 接库、ActiveX控件(OCX)或可执行文件(EXE),从而开发 出符合用户要求的界面及相关功能的软件系统。
16
GeoMap
GeoMap的设计利用了OLE/ActiveX技术的自动化 技术及控件技术,提供了一个可视化的控件和一 组自动化对象。 作为自动化服务器(Automation Servers),开发者 利用自动化控制器(Automation Controller),如 Visual , C#.NET, Visual C++,Power Builder等,编写代码操纵自动化服务器上提供的 属性、方法,为自动化服务器的事件添加事件处 理例程,完成部件到应用软件的装配过程,生成 适应用户要求的系统。
17
TITAN(泰坦)
提供一组TITAN ActiveX控件; 应用程序员可以在标准的程序设计环境 ( C#.Net、、VC、Power Builder、 Visual FoxPro和Delphi等)中将TITAN GIS 的功能嵌入到应用程序中,开发嵌入式GIS 应用系统。
18
11
MapObjects的体系结构
MapObjects的可编程对象划分为六类:
第十一章 GIS组件开发

第一节 ComGIS的基本概念
•什么是ComGIS?
ComGIS是基于COM组件构建的组件式GIS。 COM不是一种面向对象的语言,而是一种二进制标 准,它建立的是一个软件模块与另一个软件模块之 间的链接,当这种链接建立之后,模块之间就可以 通过被称之为“接口”的机制来进行通信。COM标 准增加了保障系统和组件完整的安全机制,扩展到 分布式环境的DCOM则支持分布式计算、交互操作 和有限的移植。
简单地说,组件式GIS就是采用了面向对象技术 和组件式软件的GIS系统(包括基础平台和应用系 统)[宋关福等,1999]。
第一节 ComGIS的基本概念
•什么是组件式GIS?
组件式GIS分为COM组件和CORBA组件两种,分 别由Microsoft和OMG开发。COM是公共对象模型 (Common Object Model)的英文缩写,微软官方称之 为组件对象模型(Component Object Model) ,它是 OLE(Object Linking & Embedding)和ActiveX共同的 基础。基于分布式环境下的COM被称作 DCOM(Distributed COM),它实现了COM对象与远 程计算机上的另一个对象之间直接进行交互。
第一节 ComGIS的基本概念
•什么是ComGIS?
OLE是基于COM的可以使软件件进行即插即用互 操作的一种技术,其中使用了OCX控件。
ActiveX是一套基于COM的可以使软件组件在网络 环境中进行互操作而不管该组件是用何种语言创建的 技术集。作为针对Internet应用开发的技术,ActiveX 被广泛应用于WEB服务器以及客户端的各个方面。同 时,ActiveX技术也被用于方便地创建普通的桌面应用 程序。此外,ActiveX一般具有界面。ActiveX 控件是 ActiveX技术中使用的一种可编程、可重用的基于 COM的对象。
GIS开发概述

ActiveX与ActiveX控件
ActiveX控件开发端和使用端是完全独立的, 可以用Delphi、VB等各种语言来开发,又 可以用于不同语言、不同开发平台、不同 的系统环境中。
二. 面向对象程序设计
面向对象程序设计
OOP将问题分解为一系列实体——这些实体 被称为对象(object),然后围绕这些实 体建立属性和方法。
面向对象程序设计
对象: 是人们要进行研究的任何事物,从简单的整数到 复杂的飞机均可看作对象,它不仅能表示具体的 事物,还能表示抽象的规则、计划或事物。例如:
数据访问对象: 存取地图数据库的一组对象 地图显示对象: 用来显示电子地图及符号化地图
要素的一组控件(Map,Legend,ScaleBar) 和对象 几何对象:点,线,面等用来与图层要素进行互操作 的对象 投影对象:为地图或图层定义坐标系统,及进行投 影变换的一组对象 地址匹配对象:对美国的街道数据,可快速定位 实用对象: 包含一个特殊的字符串对象Strings
•M:方法是控件内部可调用的 用以完成特定操作的过程或函 数
•E:事件是预先定义的对象能 识别的动作。
组件式GIS
组件式软件技术已经成为当今软件技术的 潮流之一,为了适应这种技术潮流,GIS软 件象其他软件一样,已经或正在发生着革 命性的变化,即由过去厂家提供了全部系 统或者具有二次开发功能的软件,过渡到 提供组件由用户自己再开发的方向上来。 无疑,组件式GIS技术将给整个GIS技术体 系和应用模式带来巨大影响
GIS开发模式
独立开发模式 宿主型开发模式 GIS组件开发模式
mapgis组件开发vb示例

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的基石”,因为以后的程序都是在这个程序的基础上“缝缝补补”而来的。
GIS开发

信息:信息是用文字、数字、符号、语言、图像等介质对事件、事物、现象等的内容、数量或特征的表示。
数据(Data):通过数字化或直接记录下来的可以被鉴别的符号,是用以载荷信息的物理符号,在计算机化的地理信息系统中,数据的格式往往和具体的计算机系统有关,随载荷它的物理设备的形式而改变。
数据和信息的关系:数据是一种未加工的原始资料,是一种载存信息的物理符号,是信息的载体和表达;而信息则是数据的内容和解释。
地理信息:是与研究对象的空间地理分布有关的信息。
它表示物体及环境固有的数量、质量、分布特征、联系和规律。
系统:由若干个相互联系、相互制约的部分(元素)组成的具有特定功能的有机整体。
信息系统:能对数据和信息进行采集、存储、加工和再现,并能回答用户一系列问题的系统称为信息系统。
地理信息系统概念:用于采集,模拟,处理,检索,分析和表达地理空间数据的计算机系统。
(在计算机硬件软件系统支持下,对整个或部分地球表面空间中有关地理分布数据进行采集,储存,管理,分析和描述的技术系统。
)地理信息系统的功能:数据的采集与编辑,数据处理,数据的存储与组织,空间查询与分析地理信息系统设计的基本思想和要求地理信息系统以数字世界表示自然世界,具有完备的空间特征,可以存贮和处理不同发展时期的大量地理数据,并具有极强的空间系统综合分析能力,是服务于地理科学研究和应用的新技术,是地理学现代化的重要手段。
GIS开发研究的四个阶段:系统分析(初步调查,可行性分析,领导批准,收集数据,数据组织方案,提出初步模型),系统设计(用户同意领导批准,总体设计,详细设计),系统实施(用户同意领导批准,编写程序,调试,编写技术文件,系统运行),系统维护及评价(系统维护,系统评价,指出问题。
)地理信息系统设计要满足的三个基本要求加强系统的实用性,降低系统开发和应用的成本,提高系统的生命周期系统设计要根据设计原理,采用结构化分析方法结构化----有组织,有计划,有规律的一种安排结构化系统分析方法----利用一般系统工程分析法和有关结构概念,把它们应用于地理信息系统的设计,采用自上而下划分模块,逐步求精的系统的分析方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• ComGIS基本概念 • ComGIS特点 • ComGIS开发方法 • ComGIS开发实践—以ArcObjects/ArcEngine为例
第一节 ComGIS的基本概念
•什么是组件式GIS?
组件式GIS,是将复杂的GIS功能按照对象、功能、 应用等层次分解为可以互操作和自我管理的组件, 这些组件由一种特定的平台或语言开发且能够在其 它的平台或语言中重复使用。
第一节 ComGIS的基本概念
•什么是ComGIS?
ComGIS是基于COM组件构建的组件式GIS。 COM不是一种面向对象的语言,而是一种二进制标 准,它建立ห้องสมุดไป่ตู้是一个软件模块与另一个软件模块之 间的链接,当这种链接建立之后,模块之间就可以 通过被称之为“接口”的机制来进行通信。COM标 准增加了保障系统和组件完整的安全机制,扩展到 分布式环境的DCOM则支持分布式计算、交互操作 和有限的移植。
第一节 ComGIS的基本概念
•什么是ComGIS?
OLE是基于COM的可以使软件组件进行即插即用互 操作的一种技术,其中使用了OCX控件。
ActiveX是一套基于COM的可以使软件组件在网络 环境中进行互操作而不管该组件是用何种语言创建的 技术集。作为针对Internet应用开发的技术,ActiveX 被广泛应用于WEB服务器以及客户端的各个方面。同 时,ActiveX技术也被用于方便地创建普通的桌面应用 程序。此外,ActiveX一般具有界面。ActiveX 控件是 ActiveX技术中使用的一种可编程、可重用的基于 COM的对象。
第一节 ComGIS的基本概念
•什么是ComGIS?
ComGIS的基本思想是把GIS的各大功能模块划分 为几个组件,每个组件完成不同的功能。各个GIS组 件之间,以及GIS组件与其它非GIS组件之间,都可 以方便地通过可视化的软件开发工具集成起来,形 成最终的GIS基础平台以及应用系统。组件如同一堆 各式各样的积木,它们分别实现不同的功能(包括 GIS和非GIS功能),根据需要把实现各种功能的 “ 积木”搭建起来,就构成应用系统。
第一节 ComGIS的基本概念
•什么是组件式GIS?
CORBA是公共对象请求代理体系结构(Common Object Request Broker Architecture)的英文缩写,是 由对象管理工作组(OMG)开发的一个组件软件标准。 OMG是由成千上百个公司组成的组织,他们致力于 构建分布式对象计算的标准体系结构。CORBA基于 对象管理体系结构,为厂商提供一个标准框架,使 他们使用不同的语言、操作系统和硬件开发出来的 应用系统,仍然具有可移植性和互操作性。
专业模型
GIS应用集成系统 ComGIS控件
其他控件
Visual Basic 等可视集成开发环境
第二节 ComGIS的特点
✓强大的GIS功能。新的GIS组件都是基于32位系统 平台的,采用InProc直接调用形式,所以无论是管 理大数据的能力还是处理速度方面均不比传统GIS软 件逊色。小小的GIS组件完全能提供拼接、裁剪、叠 合、缓冲区等空间处理能力和丰富的空间查询与分 析能力;
第二节 ComGIS的特点
✓开发简捷。ComGIS不需要额外的GIS二次开发语 言,只需按照Microsoft的ActiveX控件标准开发接口 实现GIS的基本功能函数,这不仅有利于减轻GIS软 件开发者的负担,而且增强了GIS软件的可扩展性。 GIS应用开发人员只需熟悉基于Windows平台的通用 集成开发环境,以及组件式GIS各个控件的属性、方 法和事件,就可以像管理数据库表一样熟练地管理 地图等空间数据,完成应用系统的开发和集成,无 须对开发人员进行特殊的培训。
第二节 ComGIS的特点
✓大众化。组件式技术已经成为业界标准,用户可 以象使用其它ActiveX控件一样使用ComGIS组件, 使非专业的普通用户也能够开发和集成GIS应用系统, 推动了GIS大众化进程。ComGIS 的出现使GIS不仅 是专家们的专业分析工具,同时也成为普通用户对 地理相关数据进行管理的的可视化工具。
第二节 ComGIS的特点
✓高效无缝的系统集成。由于组件生产建立在严格 的标准之上,因此,ComGIS可以嵌入通用的开发环 境(如VB、VC、Delphi、PowerBuilder、Notes、 Foxpro、Access等)中实现GIS功能,专业模型则可
以使用这些通用开发环境来实现,也可以插入其它 的专业性模型分析控件,这与传统GIS专门性开发环 境相比,是一种质的飞跃;
第二节 ComGIS的特点
✓小巧灵活、价格便宜。在组件模型下,各组件都 集中地实现与自己最紧密相关的系统功能,组件化 的GIS平台集中提供空间数据管理能力并且能以灵活 的方式与数据库系统连接。在保证功能的前提下, 系统表现得小巧灵活,而其价格仅是传统GIS开发工 具的十分之一甚至更少。这样,用户便能以较好的 性能价格比获得或开发GIS应用系统;
第一节 ComGIS的基本概念
•为什么要使用ComGIS?
传统GIS虽然在功能上已经比较成熟,但是它们多 是属于独立封闭的系统。同时,由于GIS软件变得日 益庞大,不仅用户难以掌握,而且费用昂贵,阻碍了 GIS的普及和应用。ComGIS的出现为传统GIS面临的 多种问题提供了全新的解决思路,已经成为当今软件 技术的潮流之一[比尔.盖茨,1997],为了适应这种技 术潮流,“GIS软件象其它软件一样,已经或正在发 生着革命性的变化,即由过去厂家提供了全部系统或 者具有二次开发功能的软件,过渡到提供组件由用户 自己再开发的方向上来”[徐冠华, 1997]。
简单地说,组件式GIS就是采用了面向对象技术 和组件式软件的GIS系统(包括基础平台和应用系 统)[宋关福等,1999]。
第一节 ComGIS的基本概念
•什么是组件式GIS?
组件式GIS分为COM组件和CORBA组件两种,分 别由Microsoft和OMG开发。COM是公共对象模型 (Common Object Model)的英文缩写,微软官方称之 为组件对象模型(Component Object Model) ,它是 OLE(Object Linking & Embedding)和ActiveX共同的 基础。基于分布式环境下的COM被称作 DCOM(Distributed COM),它实现了COM对象与远 程计算机上的另一个对象之间直接进行交互。