mapgis二次开发培训教程6664.docx
《mapgis二次开发培训教程6664.docx》由会员分享,可在线阅读,更多相关《mapgis二次开发培训教程6664.docx(322页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、MAPGIS二次开发培教程前言MAPGIS是武汉中地信息工程有限公司研制的具有自主版权的大型基础地理信息系统平台。它是一个集当代最先进的图形、图像、地质、地理、遥感、测绘、人工智能、计算机科学于一体的大型智能软件系统,是集数字制图、数据库管理及空间分析为一体的空间信息系统,是进行现代化管理和决策的先进工具。MAPGIS连续四年在全国GIS测评中名列第一,并成为唯一连续四年获得国家科技部向社会推荐的国产GIS软件平台。中地软件丛书之MAPGIS二次开发培训教程是根据最新推出的MAPGIS软件平台编写而成,主要介绍进行MAPGIS二次开发必须具备的基础知识、主流开发工具以及MAPGIS系统的基本概
2、念、结构体系和操作方法。该教程分为三个部分,共十一讲。其中:第一部分(即即第一讲讲的内容容):介介绍Wiindoows编编程的概概念。包包括类与与数据封封装、继继承、重重载、虚虚拟函数数与多态态性以及及内存管管理。该该部分为为可视化化编程的的基础,有有可视化化编程经经验的读读者可以以略过此此讲,直直接进入入下一部部分的学学习。第二部分(即即第二讲讲的内容容):编编程工具具VC。对对于在VVC这样样一个编编程环境境中开发发应用程程序所应应熟悉的的概念,术术语和最最基本的的框架、构构件实现现过程等等知识做做了一个个简明扼扼要的介介绍。已已掌握一一定VCC编程基基础知识识的读者者可以略略过该部部分。
3、第三部分(即即第三讲讲至第十十一讲的的内容):详细讲讲述了地地理信息息系统的的基本概概念(包包括GIIS原理理概述、空空间数据据类型、空空间数据据库、空空间数据据结构与与数据管管理等内内容);MAPPGISS的基本本概念和和体系结结构(简简要描述述了MAAPGIIS二次次开发的的基本概概念、术术语、工工作区、空空间实体体及其数数据、CC+类类组织和和开发环环境介绍绍的内容容);MMAPGGIS空空间数据据存取和和属性编编辑(包包括工作作区、空空间实体体和属性性的操作作及其网网络介绍绍);图图形显示示输出及及窗口操操作、图图形编辑辑、类库库和控件件开发;矢量空空间分析析和属性性查询;投影变变换、
4、图图框生成成和工程程管理;图库管管理和查查询系统统(包括括基于图图库的应应用程序序开发、MAPGIS图库介绍、开发的一般步骤以及结合图库显示说明图库主要函数的功能等方面的内容)以及图象分析与处理。这一部分为本教程的主要部分,能使大家从了解到熟练掌握这个部分的内容也是我们编制本书的主要目的,同时它还可被作为MAPGIS二次开发过程中的参考来使用。参加本书编编写的人人员主要要是本系系统的软软件开发发人员以以及长期期从事MMAPCCAD和和MAPPGISS培训的的教师。由由于时间间仓促,书书中难免免存在错错误和不不当之处处,敬请请广大用用户及读读者提出出宝贵意意见和建建议,以以利改进进。中地软件丛丛
5、书编委委会 220011年10月目 录第一讲基于于WINNDOWWS编程程的基础础知识111.1引言言11.2类与与数据封封装11.3继承承21.4重载载41.5虚拟拟函数与与多态性性5第二讲编程程工具VVC82.1熟悉悉VC开发发环境882.2消息息与命令令82.3文档档、视结结构1002.4图形形设备接接口1112.5对话话框和控控件1222.6编程程规范113第三讲地理理信息系系统基本本概念1153.1 GGIS原原理概述述153.2 GGIS空空间数据据类型1173.3 GGIS数数据管理理183.4空间间分析2203.5地理理信息系系统发展展20第四讲 MMAPGGIS的的基本概概念
6、和体体系结构构224.1 MMAPGGIS二二次开发发的基本本概念2224.2 MMAPGGIS基基本术语语234.3 MMAPGGIS的的数据管管理(工工作区)254.4 MMAPGGIS的的空间实实体及其其数据组组织2774.5 MMAPGGIS的的C+类组织织294.6 MMAPGGIS的的VC+开发发环境介介绍300第五讲 MMAPGGIS空空间数据据存取和和属性编编辑3225.1工作作区操作作325.2空间间实体操操作3445.3属性性(属性性结构)操操作3775.4网络络介绍444第六讲图形形显示输输出及窗窗口处理理456.1图形形显示输输出4556.2窗口口处理4496.3类库库
7、开发中中的图形形显示和和窗口处处理511第七讲图形形编辑、类类库和控控件开发发537.1图形形编辑开开发概要要537.2图形形编辑AAPI函函数开发发537.3 MMAPGGIS类类库开发发547.4 MMAPGGIS控控件开发发60第八讲矢量量空间分分析和属属性查询询668.1矢量量空间分分析6668.2属性性查询检检索711第九讲投影影变换和和图框生生成7339.1投影影变换(proojdlll.hh、corrdcvvt.hh)7339.2图框框生成(frmmdlll32.h)883第十讲图库库管理和和工程管管理91110.1 MAPPGISS图库简简介91110.2基基于图库库的应用用程
8、序的的开发99210.3结结合图库库的显示示说明图图库中主主要函数数的功能能9210.4工工程管理理(prrj_ddispp.h和和mapp_prrj.hh)966第十一讲 MAPPGISS图象处处理和分分析100111.1遥遥感图象象处理的的基本知知识100111.2处处理方法法101111.3主主要APPI 介介绍99911.4组组件介绍绍107711.5在在VC中的的开发过过程(结结合示例例程序讲讲解)110811.6示示例程序序说明1109附录 MAAPGIIS 二二次开发发问题集集锦11101.属性和和属性结结构11102.空间实实体操作作问题11233.显示、编编辑问题题12444
9、.空间分分析问题题13115.数字高高程模型型13116.安装问问题13347.工程问问题13358.输出问问题13369.其它1138第一讲 基于WINDOWS编程的基础知识第一讲 基基于WIINDOOWS编编程的基基础知识识1.1引言言1.1.11 过程程化(pprocceduurall prrogrrammmingg):程序被认为为是在一一个数据据集合上上进行的的一系列列操作。1.1.22 结构构化(sstruuctuuredd prrogrrammmingg):主要思想是是:功能能分解并并逐步求求精。1.1.33 面向向对象的的程序设设计(oobjeect_oriientted pro
10、ograammiing):实质是把数数据和处处理这些些数据的的过程合合并为一一个单独独的“对象”一个个具有确确定特性性的自完完备的实实体。1.1.44 面向向对象程程序设计计的特征征:1) 封装装2) 继承承3) 多态态1.2类与与数据封封装1.2.11 什么么是类?简单的说,类类就是一一种用户户定义的的数据类类型,跟跟结构类类似;并并且,类类具有自自己的成成员变量量和成员员函数(方方法),通通过它们们可以对对类自身身进行操操作。如如:汽车车可以看看作是发发动机、车车轮、座座椅等诸诸如此类类的集合合。也可可以从功功能的角角度来研研究,譬譬如,能能移动,加加速,减减速,刹刹车等。例如:class
11、s CMMyCllasss1proteecteed:CMyCClasss1();publiic:virttuall CMyyClaass11();1.2.22封装(eencaapsuulattionn)定义:指能能够把一一个实体体的信息息、功能能、响应应都装入入一个单单独的对对象中的的特性。封封装的优优点如下下:1) 封装装允许类类的客户户不必关关心类的的工作机机理就可可以使用用它。就就象驾驶驶员不必必了解发发动机的的工作原原理就可可以驾驶驶汽车一一样,类类的客户户在使用用一个类类时也不不必了解解它是如如何工作作的,而而只需了了解它的的功能即即可。2) 所有有对数据据的访问问和操作作都必须须通
12、过特特定的方方法,否否则便无无法使用用,从而而达到数数据隐藏藏的目的的。1.2.33对象对象就是类类的实例例。类与与对象的的关系就就如类型型和变量量的关系系,所有有对类的的操作都都必须通通过对象象来实现现。当一一个类定定义了多多个对象象时,每每个对象象拥有各各自的成成员数据据。1.2.44 类的的三种成成员类型型1) 私有有成员(priivatte):缺省情情况下,一一个类中中的所有有成员都都是私有有的。私私有成员员只能被被类本身身的成员员函数访访问。并并且不具具有继承承性。2) 公有有成员(pubblicc):公公有成员员可以被被类成员员函数和和外部函函数使用用。3) 保护护成员(proot
13、ecctedd):类类的保护护成员能能被类及及其派生生类的成成员函数数和友员员函数使使用,具具有继承承性。1.2.55 构造造函数与与析构函函数1)构造函函数a. 是特特殊的成成员函数数;在创创建对象象时首先先由系统统自动调调用。它它的作用用是为新新创建的的对象分分配空间间,或为为该对象象的成员员变量赋赋值等;b. 构造造函数名名必须与与其类名名称完全全相同,并并且不允允许有返返回值。2)析构函函数a. 析构构函数是是构造函函数的逆逆操作;b. 析构构函数在在类名之之前加来命名名,它不不允许有有返回值值,也不不允许带带参数,并并且一个个类只能能有一个个析构函函数。1.3继承承1.3.11 传统
14、统程序设设计的缺缺点:增加功能对对程序所所作的修修改工作作量非常常大。1.3.22 继承承的优点点:继承的方法法允许在在不改动动原程序序的基础础上对其其进行扩扩充,这这样使得得原功能能得以保保存,而而新功能能也得以以扩展。这这有利于于减少重重复编码码,提高高软件的的开发效效率。1.3.33 基类类与派生生类1)一个类类可以继继承其它它类的成成员,被被继承的的类叫基基类或父类;继继承类叫叫派生类类或子类2)派生类类不但拥拥有自己己的成员员变量和和成员函函数,还还拥有父父类的成成员变量量和成员员函数。1.3.44 类的的保护成成员(pprottectted)前面介绍了了类的私私有成员员只能被被类的
15、成成员函数数和友员员函数使使用;类类的保护护成员能能被类及及其派生生类的成成员函数数和友员员函数使使用。也也就是说说,类的的保护成成员具有有继承性性,而类类的私有有成员不不具有继继承性。1.3.55 公用用基类和和私有基基类1)公用基基类中的的所有ppubllic成成员在派派生类中中仍是ppubllic成成员,所所有prroteecteed成员员在派生生类中仍仍是prroteecteed成员员。2)私有基基类中的的pubblicc成员和和prootecctedd成员在在派生类类中均变变成prrivaate成成员。1.3.66 多重重继承1)多重继继承的定定义方法法例子:classs Apubl
16、iic:int ii;void funnc1();classs Bpubliic:int ii;void funnc1();classs C:pubblicc A,Bvoid Shoow();缺省情况下下基类被被定义为为 prrivaate;因此基基类B为为私有基基类。2)继承的的不确定定性例子:classs C:pubblicc A,B vvoidd Shhow() j = ii*i; func11();由于基类AA和B中同时时拥有数数据成员员i和成员员函数ffuncc1,类类C引用基基类的成成员时,系系统无法法分辨是是调用哪哪一基类类的成员员而发生生错误;3)解决多多重继承承的不确确定性:
17、使用域操作作符指明明要调用用的基类类,即可可解决不不确定性性问题。classs C:pubblicc A,B iint j; vvoidd Shhow() j = AA:ii*B:i; A:fuunc11();1.3.77多层继继承定义:所谓谓多层继继承指的的是从一一个类派派生出另另一个类类,然后后以派生生类作为为基类,派派生出另另一个类类,直到到最后生生成的派派生类满满足需要要为止(见见MSDDN中的的Hieerarrchyy Chhartt)。1.3.88派生类类的构造造函数与与析构函函数在继承关系系下,派派生类的的构造函函数负责责调用基基类的构构造函数数来设置置基类数数据成员员值。例:c
18、lasss baase/基类类 publiic:int ii;base(intt j)/构造造函数i = jj;classs deerivved:pubblicc baase/派生生类publiic:doublle ff;derivved(innt, douublee);derivved:dderiivedd(innt kk, ddoubble l):basse(kk)/派生生类构造造函数f = ll;1.3.99 构造造函数的的调用顺顺序1) 在定定义派生生类对象象时,系系统首先先调用基基类的构构造函数数,然后后调用派派生类的的构造函函数;在在上例中中,deerivved类类首先调调用baa
19、se类类的构造造函数,然然后调用用自身的的构造函函数。2) 析构构函数的的调用顺顺序与构构造函数数的调用用顺序相相反。1.4重载载1.4.11函数重重载1)如果函函数有相相同的名名称和返返回值,而而有不同同的参数数个数或或参数类类型,则则这些函函数就是是重载函函数。2)派生类类继承了了基类的的某一函函数,并并且又自自定义了了一个同同名函数数,有相相同的返返回值,不不同的参参数类型型或参数数个数。这这种情况况不属于于重载。因因为它们们属于不不同的域域。3)例:classs baase void funnc(iint i)void funnc(ddoubble f)void funnc(ddoub
20、bleff, llongg q);1.4.22 操作作符重载载重载操作符符的定义义:返回回值类型型 opperaatorr opp (参参数表);其中中,opp为重载载操作符符,它必必须是VVC+中所定定义的运运算符。然然后像定定义函数数一样定定义重载载操作符符函数。例子:classs peersoonint aage;void opeerattor +();void peersoon:opeerattor+() age+;1.5虚拟拟函数与与多态性性多态性是面面向对象象程序设设计的精精髓之所所在,也也是C+中最最难理解解和掌握握的部分分。在CC+中中,多态态性是建建立在虚虚拟函数数基础上上的
21、,虚虚拟函数数的使用用使类的的成员函函数表现现出多态态性。1.5.11虚拟函函数1)函数的的定义:在定义义类时在在其成员员函数前前加上关关键字vvirttuall;2)如果基基类中成成员函数数定义为为虚函数数,则派派生类中中与其定定义完全全相同的的成员函函数,编编译器自自动将其其视为虚虚函数;3)只有类类的成员员函数才才能定义义为虚函函数。4)虚拟成成员函数数的存取取要看首首次定义义它的类类中,该该函数是是pubblicc还是prrivaate。例:classs Innsecct virtuual boool CCanFFly();bool Inssectt : CaanFlly()retur
22、rn FFALSSE;classs Buutteerflly:ppubllic Inssecttbool CannFlyy();bool Buttterrflyy : CaanFlly()returrn TTRUEE;1.5.22 虚函函数的调调用1) 根据对象的的不同而而去调用用不同类类的虚拟拟函数2) 可以使用基基类对象象调用派派生类对对象,即即将派生生类对象象或指针针赋值给给基类对对象或指指针。3) 反方向的赋赋值(将将基类的的对象或或指针赋赋给派生生类的对对象或指指针)是是危险的的。例:bool rtnn;Insecctinc11,*ppIncc;Butteerflly bbtflly
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mapgis 二次开发 培训 教程 6664
限制150内