GIS设计与开发课程教案.docx
- 文档编号:3538311
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:38
- 大小:43.40KB
GIS设计与开发课程教案.docx
《GIS设计与开发课程教案.docx》由会员分享,可在线阅读,更多相关《GIS设计与开发课程教案.docx(38页珍藏版)》请在冰豆网上搜索。
GIS设计与开发课程教案
GIS设计与开发课程教案赵宗华整理
地理信息系统导论课程教案
教学内容及过程:
教学引入(可选):
什么是地理信息系统。
地理信息系统如何实现?
从数据流的观点去分析GIS系统的各个组成部分。
教学内容与教学设计:
1.1GIS开发模式
独立开发
指不依赖于任何GIS工具软件,从空间数据的采集、编辑到数据的处理分析及结果输出,所有的算法都由开发者独立设计,然后选用某种程序设计语言,如VisualC++、Delphi等,在一定的操作系统平台上编程实现。
这种方式的好处在于无须依赖任何商业GIS工具软件,减少了开发成本,但一方面对于大多数开发者来说,能力、时间、财力方面的限制使其开发出来的产品很难在功能上与商业化GIS工具软件相比,而且在购买GIS工具软件上省下的钱可能还抵不上开发者在开发过程中绞尽脑汁所花的代价。
宿主型二次开发
指基于GIS平台软件上进行应用系统开发。
大多数GIS平台软件都提供了可供用户进行二次开发的脚本语言,如ESRI的ArcView提供了Avenue语言,MapInfo公司的MapInfoProfessional提供了MapBasic语言等等。
用户可以利用这些脚本语言,以原GIS软件为开发平台,开发出自己的针对不同应用对象的应用程序。
这种方式省时省心,但进行二次开发的脚本语言,作为编程语言,功能极弱,用它们来开发应用程序仍然不尽如人意,并且所开发的系统不能脱离GIS平台软件,是解释执行的,效率不高。
基于GIS组件的二次开发
大多数GIS软件产商都提供商业化的GIS组件,如ESRI公司的MapObjects、MapInfo公司的MapX等,这些组件都具备GIS的基本功能,开发人员可以基于通用软件开发工具尤其是可视化开发工具,如Delphi、VisualC++、VisualBasic、PowerBuilder等为开发平台,进行二次开发。
利用GIS工具软件生产厂家提供的建立在OCX技术基础上的GIS功能控件,如ESRI的MapObjects、MapInfo公司的MapX等,在Delphi等编程工具编制的应用程序中,直接将GIS功能嵌入其中,实现地理信息系统的各种功能
三种实现方式的分析与比较
由于独立开发难度太大,单纯二次开发受GIS工具提供的编程语言的限制差强人意,因此结合GIS工具软件与当今可视化开发语言的集成二次开发方式就成为GIS应用开发的主流。
它的优点是既可以充分利用GIS工具软件对空间数据库的管理、分析功能,又可以利用其它可视化开发语言具有的高效、方便等编程优点,集二者之所长,不仅能大大提高应用系统的开发效率,而且使用可视化软件开发工具开发出来的应用程序具有更好的外观效果,更强大的数据库功能,而且可靠性好、易于移植、便于维护。
尤其是使用OCX技术利用GIS功能组件进行集成开发,更能表现出这些优势。
由于上述优点,集成二次开发正成为应用GIS开发的主流方向。
这种方法唯一的缺点是前期投入比较大,需要同时购买GIS工具软件和可视化编程软件,但“工欲善其事,必先利其器”,这种投资值得。
目前许多软件公司都开发了很多ActiveX控件,合理选择和运用现成的控件,减少了开发者的编程工作量,使开发者避开某些应用的具体编程,直接调用控件,实现这些具体应用,不仅可以缩短程序开发周期,使编程过程更简洁,用户界面更友好,可以使程序更加灵活、简便。
1.2面向对象的开发(OOP:
ObjectOrientedProgrammin-g)
发明面向对象程序设计方法的主要出发点是弥补面向过程程序设计方法中的一些缺点。
OOP把数据看作程序开发中的基本元素,并且不允许它们在系统中自由流动。
它将数据和操作这些数据的函数紧密的连结在一起,并保护数据不会被外界的函数意外的改变。
OOP允许我们将问题分解为一系列实体——这些实体被称为对象(object),然后围绕这些实体建立数据和函数。
“面向对象”作为一个术语,在不同的人群中有着不同的解释。
因此,了解一些在面向对象
程序设计中广泛应用的概念是必须的。
本节我们讨论以下这些内容:
1、对象(Object)
2、类(Class)
3、数据抽象(Dataabstraction)
4、继承(Inheritance)
5、动态绑定(Dynamicbinding)
6、数据封装(Dataencapsulation)
7、多态性(Polymorphism)
8、消息传递(Messagepassing)
OOP具有许多优点,无论是对于程序设计者或者用户来说都是如此。
面向对象为软件产品扩
展和质量保证中的许多问题提供了解决办法。
这项技术能够大大提高程序员的生产力,并可提高
软件的质量以及降低其维护费用。
其主要的优点陈列于下:
1、通过继承,我们可以大幅减少多余的代码,并扩展现有代码的用途;
2、我们可以在标准的模块上(这里所谓的“标准”指程序员之间彼此达成的协议)构建
我们的程序,而不必一切从头开始。
这可以减少软件开发时间并提高生产效率;
3、数据隐藏的概念帮助程序员们保护程序免受外部代码的侵袭;
4、允许一个对象的多个实例同时存在,而且彼此之间不会相互干扰;
5、允许将问题空间中的对象直接映射到程序中;
6、基于对象的工程可以很容易的分割为独立的部分;
7、以数据为中心的设计方法允许我们抓住可实现模型的更多细节;
8、面向对象的系统很容易从小到大逐步升级;
9、对象间通讯所使用的消息传递技术与外部系统接口部分的描述更简单;
10、更便于控制软件复杂度。
当需要将以上所说的所有特性有机的结合于一个面向对象系统中,它们之间的相对重要性就取决于工程的类型和程序员的喜好。
为了获得上述的某些优势,必须考虑很多事情。
例如,对象库必须可以被重用。
技术还在不停的发展,现有的产品也会很快的更新换代。
如果重用没有能够实现,那么就需要进行严格的控制和管理。
易于使用的开发软件往往难以编写。
面向对象程序设计工具有望解决这个问题。
1.3组件式GIS(ComGIS)
组件技术使近二十年来兴起的面向对象技术进入到成熟的实用化阶段。
在组件技术的概念模式下,软件系统可以被视为相互协同工作的对象集合,其中每个对象都会提供特定的服务,发出特定的消息,并且以标准形式公布出来,以便其他对象了解和调用。
组件间的接口通过一种与平台无关的语言IDL(InterfaceDefineLanguage)来定义,而且是二进制兼容的,使用者可以直接调用执行模块来获得对象提供的服务。
早期的类库,提供的是原代码级的重用,只适用于比较小规模的开发形式;而组件则封装得更加彻底,更易于使用,并且不限于C++之类的语言,可以在各种开发语言和开发环境中使用。
由于组件技术的出现,软件产业的形式也随之发生了很大的变化。
大量组件生产商涌现出来,并推出各具特色的组件产品;软件集成商则利用适当的组件快速生产出用户需要的某些应用系统;大而全的通用产品逐步减少;很多相对较为专业,但用途广泛的软件,如GIS、语音识别系统等,都以组件的形式组装和扩散到一般的软件产品中。
COM是组件式对象模型(ComponentObjectModel)的英文缩写,是组件之间相互接口的规范,是OLE(ObjectLinking&Embedding)和ActiveX共同的基础,其作用是使各种软件构件和应用软件能够用一种统一的标准方式进行交互。
COM不是一种面向对象的语言,而是一种与源代码无关的二进制标准。
COM所建立的是一个软件模块与另一个软件模块之间的链接,当这种链接建立之后,模块之间就可以通过称之为“接口”的机制来进行通信。
COM标准增加了保障系统和组件完整的安全机制,并扩展到分布式环境。
它定义了软件组件的接口COM本质上仍然是客户/服务器模式。
客户(通常是应用程序)请求创建COM对象并通过COM对象的接口操纵COM对象。
服务器根据客户的请求创建并管理COM对象。
客户和服务器这两种角色并不是绝对的。
ActiveX
ActiveX是Microsoft提出的一组基于COM(ComponentObjectModel,部件对象模型)规范使得软件部件在网络环境中进行交互的技术集。
它与具体的编程语言无关。
作为针对Internet应用开发的技术,ActiveX被广泛应用于WEB服务器以及客户端的各个方面。
同时,ActiveX技术也被用于方便地创建普通的桌面应用程序
ActiveX控件
ActiveX控件是充分利用ActiveX(基于COM)技术的自定义控件,是基于与应用程序无关的思想而设计的,其目标是提供一种面向对象、与编程语言无关、可以在应用程序之间互相访问对象地机制。
ActiveX控件是建立在COM标准上的独立的软件元件,提供给用户应用接口,发送相应的事件,开发者则可以截取这些事件,执行相应的功能。
ActiveX控件开发端和使用端是完全独立的,可以用Delphi、VB等各种语言来开发,又可以用于不同语言、不同开发平台、不同的系统环境中。
一个或多个ActiveX控件会保存在一个动态链接库中,但它是一种特殊的动态链接库,其扩展名是OCX。
课后小结:
三种开发模式、面向对象、组件式GIS
GIS设计与开发课程教案
授课题目:
第二章、MO/VBGIS二次开发入门
教学内容及过程:
教学引入(可选):
分析一个影像处理GIS系统的设计思路。
教学内容与教学设计:
2.1ESRI产品体系
ArcView
ArcEditor
ArcInfo
2.2MO概述
MO的组成
数据访问对象:
存取地图数据库的一组对象
地图显示对象:
用来显示电子地图及符号化地图要素的一组对象
几何对象:
点,线,面等用来图层要素进行互操作的对象
投影对象:
为地图或图层定义坐标系统,及进行投影变换的一组对象
地址匹配对象:
实用对象:
包含一个特殊的字符串对象Strings
MapObjects可以在多种符合工业标准的开发环境下使用,比如VisualBasic,PowerBuilder,VisualC++,等.MapObjectsplugsdirectlyintothesefamiliarenvironments,允许你快捷地创建应用程序。
MapObjects不适用于最终用户。
它是为程序开发者设计的。
程序开发者可利用MapObjects开发应用程序并把这些程序提供给下一级用户使用。
显示一张多图层地图(道路,河流,边界)。
放大,缩小,漫游。
生成图形组件,如点,线,圆,多边形。
添加注释
识别地图上被选中的要素(点,线,面)。
通过线,方框,区域,多边形,圆来选择要素。
拾取距某参照物特定范围内的要素。
通过SQL描述来选择要素。
对选择的要素进行基本统计。
查询与更新被选择的要素的属性数据
绘制专题图。
根据字段的值标注图层要素。
从航片或卫星图片上截取图像。
动态显示实时或时间系列数据。
通过输入地址在地图上定位。
将数据投影到不同的坐标系下
MO支持的数据源
可通过MapObjects使用Shape文件,图像文件,属性表或通过ESRI的专用数据库引擎连接的专用数据库。
Shape文件是地图数据的矢量形式,图像文件是栅格图像或尤指航空或卫量的畸变图像的纠正照片,属性表是可用ODBC装入的任意格式。
专用数据库是网络上通过ESRI专用数据库引擎连接的UNIX服务器。
Shape文件适用于中小型地图数据。
而大型数据(省,国家道路网),你就需使用专用数据库。
用MapObjects编写的软件是可伸缩的。
最初你可用Shape文件。
当用户需要与大型数据库连接时,几乎所有代码都可被移到与专用数据库连接后的工作中,你仅需修改打开数据源的几行代码。
一个Shape文件由三种文件组成,
1.主文件(*.shp)包含几何形状。
2.索引文件(*.shx)包含数据的索引。
3.数据库文件(*.dbf)包含形的属性,你可以修改字段的定义。
每一个Shape文件包含一种类型(点弧多边形)
点有一个(X,Y)坐标和一个属性。
弧段包含一条或一组(可连,可不连)的多义线。
一条多义线是一组有序结点。
每一弧段有一个属性记录。
多边形包括一个或多个边界,一个边界是一个无交叉点的闭合环,一个边界可嵌于一多边形中而形成环形。
边界的方向决定它是否代表区域内的面积。
每一多边形有一属性记录。
图像(Image)文件
可把图像文件精确重叠于大地坐标的Shape文件。
MapObjects(或其它ESRI软件)用worldfiles来配准图像。
一个world文件是一个简单的文本文件,它包括数学参数来定义转换关系,其公式为:
x'=Ax+By+C
y'=Dx+Ey+F
x'像元在地图上的计算坐标值X。
y'像元在地图上的计算坐标值Y。
x:
像元列数。
Y:
像元行数。
AX轴上像元的尺寸。
B,D旋转关系项。
E负的Y轴上像元的尺寸。
C,F左上角像元中心的XY地图坐标。
注意E为"负"值,因为,Shape文件坐标与图像坐标Y方向正向反。
world文件是包含A,B,C,D,E,F值的连续行文本文件。
注意MapObjects不支持图像旋转。
这样B,D的值在world文件中是被忽略的。
为果需要旋转,你可用ESRI的ARCGRID。
属性表
用MapObjects编写的应用程序,可通过一种关系与外部属性表相连。
关系是连接组件表(组件表可是Shape文件的dBASE表,也可是从SDE层中得到的表)与属性表的表。
为了这种连接,可安装ODBC。
这种关系留存于应用程序运行期间,它不会被写入文件中。
要建立这种关系。
你要确认一个组件表的某一字段,一个要与之建立关系的属性表和该属性表的一个字段。
属性表的相关字段必须是primarykey或允许在其上建立一独一无二的索引。
有一例外,在少于100个记录的小型组件表上可建立无特殊字段的关系。
一旦建立了关系,它就在组件表上建立了一种纽带,你可通过属性表的字段查询属性,但你不能在MapObjects中通过SQL表达式向里面增加数据。
空间数据引擎(SDE)
如果你采用大规模地图数据组来组织工作,见意考虑使用空间数据引擎(SDE),一种高性能制图数据服务器。
通过SDE,空间数据可存放于UNIX服务器上。
用户的SDE应用程序可基于UNIX或WIN环境被编写,SDE提供软件开发和数据管理能力:
管理大规模地理数据,提供地图无缝显示。
通过某种商业关系数据库存储数据。
通过一组高效的尖端空间数据操作来查询空间数据。
SDE包括一个C语言应用程序接口(API),它提供最大能力的执行效率和极大的灵活性。
2.3建立开发环境
STEP1:
运行VB安装光盘上的的Setup.exe程序,按提示进行安装。
(安装过程中需要系列号的地方可输入任意数字例如:
111-1111111直到“下一步”按钮变成可用状态)
STEP2:
安装完成后,在光盘目录VB6_SP6中找到SetupSP6.exe,将VB6升级到最新版本。
SP6是微软公司对其产品VB6的第6次更新修正了以前的一些问题
STEP3:
在光盘找到名为MO22的文件夹,其中有三个文;依次运行安装MO2.2的评估版;MO22Eval_Only.EXE安装开发示例及GIS数据
2.4开始使用MO
STEP1:
启动VisualBasic6,在开始出现的向导中选择新建工程(标准EXE).确定
STEP2:
在工具栏上点右键(工具栏位于VB窗口的左边),在出现的右键菜单中点击”部件”命令.
将地图控件放置到窗体上
1.双击工具箱上的地图控件按钮来将新地图增加到窗体中
2.调整地图控件的尺寸使其充满窗体
选择将要显示在地图上的数据
可以通过地图控件的属性页上的属性设置功能,指定将被显示在地图上的数据.
1.在地图控件上方点击右键,出现右键菜单.
2.在出现的右键菜单中选择“Properties…”命令,以显示地图控件的属性页.
3.点击“Add”按钮并且定位包含示范数据的文件夹d:
\Data\China400。
4.点击文件rai_4m.shp然后点击“打开”按钮.
5.以同样的的方式添加文件bou2_4p.shp
6.在该属性页上,选中bou2_4p的图层,下移使之处在rai_4m的下方
设置各图层的属性
1.点击图层列表框中的bou2_4p图层,然后点击“属性”.
2.点击“颜色”按钮以选择图层bou2_4p的颜色.
3.点击“确认”按钮关闭对话框.
保存工程
1.点击菜单“文件”->>点“保存”命令以保存工程.
2.选择所要保存的文件夹,然后在文件名称输入框内输入“StarterMap.frm.”
3.点击保存
4.在第二个保存对话中,在文件名输入框中输入“StarterMap.vbp”
5.点击保存
运行工程
课后小结:
MO是什么?
MO支持哪几种数据类型
如何在VB中建立MO的开发环境
怎样在VB中使用MO
GIS设计与开发课程教案
授课题目:
第三章、使用地图和图层
教学目的、要求:
掌握向MO控件中添加矢量数据和影像数据的方法。
掌握各种相关对象Map、Layers、ImageLayer、Maplayer的使用方法。
教学重点:
地图对象Map(控件)、层集对象Layers、矢量层对象MapObjects2.MapLayer、影像层对象MapObjects2.ImageLayer、向地图中添加数据的方法、基本操作:
放大,缩小,漫游、控制图层显示顺序
教学难点:
向地图中添加数据的方法、动态跟踪层操作
地理信息系统导论课程教案
教学内容及过程:
教学引入(可选):
1.分析一个简单GIS系统中地图组件的设计思路。
Map应该具有的属性、方法、和实现算法。
2.分析GIS系统中的图层数据组织方式和实现layer、layers
3.分析动态跟踪层的意义和实现方法
教学内容与教学设计:
3.1本章将涉及以下内容:
如何在地图上表示层。
层的次序。
向地图中加入Shape文件。
向地图中加入图像文件。
建立地图用户接口。
设置地图属性。
数据连接。
修改图层。
动态跟踪层。
3.2图层
用户眼中的图层
地图的最上方是动态跟踪层,最下方为地图控件,中间为层集。
层集中图层对象和影像层对象可以任意顺序排放,但通常影像层显示在最底层作为背景。
以层方式工作十分有意,因为它十你很容易的选取同类地物。
程序员眼中的层
以下是影响显示地图数据的关键对象:
地图控件是显示图层的平台,它有两个重要的属性:
层集和动态跟踪层对象。
层集包含MapLayer对象和ImageLayer对象。
它们的顺序决定在地图控件中的相互覆盖关系。
MapLayer对象代表矢量数据。
ImageLayer对象代表栅格数据。
动态跟踪层对象显示实时数据。
地图控件的关键属性是层集和跟踪层。
当你向窗体中加如一地图控件,你也同时建立了一个空层集和空跟踪层。
另一重要属性是Extent。
它决定地图的显示范围。
用Refresh方法在地图控件上画层。
当你执行下列操作时Refresh方法将自动执行:
向层集中加入图层或影像层。
使用Pan和CenterAt方法。
更新地图控件的Extent属性。
使用Clear或Remove方法。
注意,有些操作不会引发Refresh方法,在编写程序时应在这些操作后加上Refresh方法一使操作更新显示。
层集
层集是地图控件的重要属性,包含矢量图层和影像层。
使用Add方法可向层集中加入图层或影像层,无论增加了图层还是影像层,FullExtent属
性都会使地图撑满。
如果你想使全图重新显示,可设置Extent属性为FullExtent。
Setmap1.Extent=map1.FullExtent
Clear和Remove方法可删除层集中某层。
例如:
Map1.Layers.Remove(4)
MoveTo、MoveToBottom和MoveToTop方法可改变层集中侧的顺序。
层的表示可以有层名和索引两种方式。
例如,下面的例子中索引号为2,层名名叫
Hydrography:
Map1.Layers.Item
(2).Symbol.Color=vbBlue
Map1.Layers
(2).Symbol.Color=vbBlue
Map1.Layers.Item("Hydrography").Symbol.Color=vbBlue
Map1.Layers("Hydrography").Symbol.Color=vbBlue
3.2.2地图对象Map(控件)
主要属性:
Name:
String;
Layers:
Layers;
Extent:
Rectangle
FullExtent:
Rectangle
CoordinateSystem:
Variant
TrackingLayer:
TrackingLayer
主要方法:
CenterAt(X,Y)
Pan
FlashShape(shape,nTimes)
TrackRectangle
TrackLine
TrackCircle
TrackPolygon
主要事件:
BeforeLayerDraw事件起动。
层集按索引相反顺序调出。
AfterLayerDraw事件起动。
BeforeTrackingLayerDraw事件起动。
如果任何GeoEvents加入到TrackingLayer中,他们就被画出。
AfterTrackingLayerDrow事件启动。
3.2.3层集对象Layers
主要属性:
Count:
Integer
主要方法:
Add(layer)
Remove(index)
Clear
Item(index)
MoveToBottom(index)
MoveTo(fromindex,toindex)
3.2.4矢量层对象MapObjects2.MapLayer
图层对象代表矢量数据。
你可以下面的方式建立新层:
DimmLayerAsNewMapObjects2.MapLayer
主要属性:
Name:
String
GeoDataSet:
GeoDataSet
Records:
RecordSet
Render:
Object
LayerType:
LayerTypeConstants
ShapeType:
Integer
Symbol:
Symbol
Extent:
Rectangle
Visable:
Boolean
主要方法:
SearchExpression(expression)
AddRelate((toField,sourceTa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GIS 设计 开发 课程 教案