GIS程序设计1

上传人:鲁** 文档编号:569556471 上传时间:2024-07-30 格式:PPT 页数:82 大小:2.47MB
返回 下载 相关 举报
GIS程序设计1_第1页
第1页 / 共82页
GIS程序设计1_第2页
第2页 / 共82页
GIS程序设计1_第3页
第3页 / 共82页
GIS程序设计1_第4页
第4页 / 共82页
GIS程序设计1_第5页
第5页 / 共82页
点击查看更多>>
资源描述

《GIS程序设计1》由会员分享,可在线阅读,更多相关《GIS程序设计1(82页珍藏版)》请在金锄头文库上搜索。

1、GIS程序设计1课程简介课程课时构成20(理论)+28(实验)课程目标了解GIS程序设计概念,掌握GIS程序设计基本方法;理解面向对象GIS程序设计概念,掌握组件式GIS程序设计方法;具备初步GIS系统开发能力。2课程简介课程基本内容1.GIS程序设计基本概念和方法2.组件技术与应用3.ArcGIS Engine开发平台4.基于ArcGIS Engine的GIS程序设计与开发*实验:10个方面内容3课程简介参考教材1.ArcObjects开发基础与技巧,蒋波涛,武汉大学出版社,2006年2.地理信息系统开发:ArcObjects方法,韩鹏,武汉大学出版社,2004年3.ArcGIS Engin

2、e 应用开发教程ESRI培训教程4课程简介其他资源1.ArcGIS Engine开发帮助文档2.ESRI开发者网络:3.ESIR中国社区:5课程简介课程要求与考核突出实践性,强调动手能力,掌握基本的GIS程序设计方法 重视平时作业(成绩)考试方式为分为两种:上机操作和试卷考查成绩评定:平时40%,期末60%6第一章 GIS程序设计基础一、 程序设计概念1、程序程序是由计算机语言的语句序列组成的文件。更确切地说,所谓程序,就是用计算机语言对所要解决的问题中的数据以及处理问题的方法和步骤所做的完整而准确的描述。7第一章 GIS程序设计基础2、算法沃思:程序=数据结构+算法所谓算法,通俗地讲就是一种

3、解题方法,所要采取的确定的有限的解题步骤。计算机解题的算法,严格地讲是由若干条指令组成的有穷序列。8第一章 GIS程序设计基础3、程序与算法的区别算法可以采用自然语言、伪代码、流程图、N-S图、PAD图来进行描述,程序只能用计算机语言来编写程序中的指令必须是可以执行的,而算法中的描述无此限制算法必须满足有穷性,程序不一定满足有穷性9第一章 GIS程序设计基础4、程序设计用计算机语言把解题步骤编写成计算机可执行的指令序列的过程。程序设计技术是设计、程序编制和调式程序的方法和过程。10第一章 GIS程序设计基础二、软件开发与程序设计软件开发是一个系统工程,包含了多个环节。可行性研究-需求分析-系统

4、分析-系统设计-系统实施-系统测试-系统维护11第一章 GIS程序设计基础程序设计处于系统设计中的详细设计阶段以及实施(编码)阶段。详细设计的基本任务是:描述模块执行过程、局部数据组织、控制流和每一步具体加工要求及实现细节。实现是将详细设计翻译成为代码的过程,主要由程序员来执行。12第一章 GIS程序设计基础三、两种程序设计方法(一)结构化程序设计方法(SP方法)1.结构化程序设计的概念最早由荷兰学者E.W.Dijkstra提出。结构定理指出:任何程序逻辑都可用顺序、选择和循环3种基本控制结构实现,并且是具有单入口单出口的。13第一章 GIS程序设计基础A顺序结构B选择结构C“当型”循环结构D

5、“直到型”循环结构14第一章 GIS程序设计基础2.模块化设计模块是指完成系统中的某种功能的独立单元,即可用一个名字调用的一段程序语句或是软件被划分成若干可独立命名地和编址的元素,类似“子程序”概念。它具有独立的输入、输出、相应的程序、数据结构,相应的数据,相应的程序代码、功能等特性。15第一章 GIS程序设计基础(1)模块划分原则相对独立,功能单一。可以单独理解、单独编程、单独测试。块间联系(耦合度)尽量少,块内联系(聚合度)尽量多。16第一章 GIS程序设计基础(2)描述方式模块:用 表示,方框中写有反映该模块功能的名称。调用:用 表示。数据:用调用箭头边上的小箭头表示,且将数据名写在其边

6、上。17第一章 GIS程序设计基础(3)绘制结构图的原则结构图中模块间传送的数据按调用模块使用的名字(实在参数名)命名。ABx,yzABx,yw,z18第一章 GIS程序设计基础设计结束后,作为最终文档资料,结构图可采用下图形式。ABC1212inout19第一章 GIS程序设计基础菱形符号表示一个条件。弧形箭头表示循环。带有双竖线的方框表示现成的模块或专用模块。ABABCAB20第一章 GIS程序设计基础一个模块在结构中图中只能出现一次,否则修改模块结构时就需要修改多处。为了避免线条交叉过多,需多次用到的模块可用圆表示。Proc1Proc2scanfprintfscanfprintfPP21

7、第一章 GIS程序设计基础(4)块间联系模块之间的联系一般从三个方面衡量:方式块间联系是通过怎样的方式进行的。包括两类:用过程语句调用:通过模块的名字调用Main() void proc(int m,int n) proc(a,b); 22第一章 GIS程序设计基础直接调用:一个模块直接存取另一个模块内部的某些信息,同时它也引用了除模块名之外的别的名字引用模块内的信息。作用块间共用的信息是作什么用的按照联系的作用关系分为三类:数据型控制型:一个模块直接转向另一个模块内部的某个位置23第一章 GIS程序设计基础混合型:即控制/数据型,一个模块修改另一个模块的指令。AB取平均成绩或最高成绩平均/最

8、高成绩AB1取平均成绩B2取最高成绩成绩成绩“控制型”块间联系及改进24第一章 GIS程序设计基础数量块间共用信息的多少比如全局变量,大大增加了模块间的联系。一般一个模块最好只引用其调用模块显式传送给它的2-4个参数以及它本身的局部变量。25第一章 GIS程序设计基础(5)块内联系块内联系是指一个模块内部各部分之间的联系,它描述了一个模块内部元素在功能上相互关联的强度。包含6种类型:偶然型(共存型):形成没有什么原因,完全是偶然的。模块内部各部分之间没有联系。模块含义不易说明,不易修改,不易测试、维护。26第一章 GIS程序设计基础逻辑型:各成分逻辑上相似,即把几种相关功能组合在一个模块内,每

9、次调用由传给模块的参数确定执行哪种功能。缺点是不易修改,效率低。PQRSTMOVE A TOBREAD CARDFILEMOVE C TO D偶然型XYZABC逻辑型27第一章 GIS程序设计基础XYZABXYZXYZ逻辑型28第一章 GIS程序设计基础瞬时型(时间性内聚)各成分需要无中断地同时执行,即与时间有关系。例如初始化系统模块、系统结束模块、紧急故障处理模块等。紧急意外事故处理关闭文件报警保留现场瞬时型29第一章 GIS程序设计基础通信型成分引用共同的数据,即模块内各部分使用相同的输入数据,或产生相同的输出结果。AB存入打印修改删除打印通信型30第一章 GIS程序设计基础顺序型(过程性

10、内聚)某个成分的输出是另一个成分的输入,即模块内个处理成分相关,且必须以特定次序执行。A数据B计算读入编辑累加打印顺序型31第一章 GIS程序设计基础功能型所有成分结合起来恰好完成了一个具体任务。判定一个模块是否为功能型,可以从它调用者的角度看能否用一个不含多个动词的短句简略地描述这个模块“做什么”。优点是易于理解,界面一般比较清晰,易编程,易测试和维护,复用性好。32第一章 GIS程序设计基础块内联系类型性能比较联系类型 块间联系清晰性复用性可修改性 可理解性功能型好好好好好顺序型好好中好好通信型中好差中中瞬时型差中坏中中逻辑型坏坏坏坏差偶然型坏差坏坏坏33第一章 GIS程序设计基础3.详细

11、设计的描述方式(1)流程图(FC,Flow Chart)34第一章 GIS程序设计基础35第一章 GIS程序设计基础流程图的优点:对控制流程的描绘很直观,简单清晰,便于初学者掌握。流程图的缺点:流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。流程图中用箭头代表控制流,因此程序员不受任何约束,可以不顾结构化程序设计的精神,随意转移控制。36第一章 GIS程序设计基础程序流程图不易表示数据结构和描述有关的数据,而只能描述执行过程。程序流程图中的箭头使用不当时,流程图则不易理解,将来无法维护。程序流程图中的符号繁多,篇幅很长,记忆不便,容易产生误解。

12、37第一章 GIS程序设计基础(2)盒图(N-S图)1973年美国学者IKE.Nassi和Ben.Schneiderman提出。第一任务第二任务第三任务条件T FTHEN部分 ELSE部分循环条件WHILE部分顺序结构 选择结构 while循环型 38第一章 GIS程序设计基础循环条件DOWHILE部分条件值1 值2 处理1 处理2 子程序DO while 循环型多条件选择结构调用子程序39第一章 GIS程序设计基础盒图的优点:功能域明确,可以从盒图上直接看出。不可能任意转移控制。容易确定局部和全局数据的作用域。容易表现嵌套关系,且嵌套深度没有限制,也可以表示模块的层次结构。盒图简单,易学易用

13、。40第一章 GIS程序设计基础aabbZ1CASE Zi,i=1,2,3,4 ff Z2 Z3 Z4 Z6 F TZ5 gg ii cc dd ee hh Z7Z8jj41第一章 GIS程序设计基础(3)问题分析图(PAD,Problem Analysis Diagram)由日立公司二村良颜等人于1973年提出,它用二维树形结构的图形表示程序的控制流,将这种图按“走树”规则翻译成程序代码比较容易。42第一章 GIS程序设计基础S1S2S1S2CWHILE CSDOWHILE CS顺序结构选择结构While循环Do While循环43第一章 GIS程序设计基础(4)IPO图(Input-Pro

14、cess-Output)IPO图是层次结构图(HIPO)的一部分,用来描述层次图中每一个功能模块内部的数据处理过程,包括输入、处理和输出三个部分。IPO图编号(模块编号):HIPO图编号:数据库设计文件编号:编码文件号:编程要求文件号:模块名称:设计者:使用单位:编程要求:输入部分处理部分输出部分IPO标准格式44第一章 GIS程序设计基础(5)过程设计语言(PDL,Process Design Language)PDL又称为伪码,伪程序,它是一种混杂语言。它的外层语法使用一种结构化程序设计语言的语法描述控制结构和数据结构,是确定的;内层语法描述具体操作,可灵活使用一种自然语言(如英语),是不

15、确定的。45第一章 GIS程序设计基础Execute process aaDo Execute process bbif condition Z1ThenExecute process ffif condition Z6 Then do Execute process ii while(condition Z7) Else Execute process gg execute process hh else switch(condition) case z2: do execute process cc while(condition Z5) While(condition Z8)Execut

16、e process jj46第一章 GIS程序设计基础PDL的优点:由于同自然语言很接近,易于理解,修改。可以作为注释嵌在源程序中成为程序的内部文档。由于是语言形式,易于使用普通的文本编辑程序,便于修改。由于同程序是同构的,可以利用自动产生程序自动地由PDL生成程序代码。PDL的缺点:不如图形描述直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰、简单。47第一章 GIS程序设计基础常用方法比较常用方法比较 准则表示法易用性逻辑表达能力机器可读性易转换程序代码结构化易修改性数据表示能力易验证性使用频率流程图优中中良差差差差高PAD良良中良优差中中低PDL优良中优良良中中高48第一章

17、GIS程序设计基础(二)面向对象程序设计1.面向对象方法的特点与人类习惯的思维方法一样软件系统结构稳定软件系统具有可复用性软件系统易于维护49第一章 GIS程序设计基础2.面向对象的概念(1)对象(object)对象是指问题域中某些事物的抽象,可表现该事物的特征和行为,是一个由属性及操作组成的封装体。(2)类(class)类是指具有相同属性和操作的对象集合,是对象的抽象。类抽象地描述了属于该类的全部对象的属性和操作,对象是类的一个实例,类可以产生许多对象,每个对象具有不同的属性值和不同的操作内容。50第一章 GIS程序设计基础(3)封装(encapsulation)封装是指将类的属性和操作结合

18、起来,形成一个独立的整体。在实际应用中,对象的外部属性和操作是可以访问的,但其内部细节看不到,封装的目的实现了信息隐藏。(4)继承(inheritance)继承是指子类具有父类的所有属性和操作,当由父类创建子类时,子类便继承父类的特性和行为,并且可以为子类添加新的属性和操作。51第一章 GIS程序设计基础(5)多态性(polymorphism)多态性是指在父类中定义的属性和操作被不同的子类继承后,可以具有不同的特征和行为。同一个属性或操作在父类与子类中有不同的语义,可产生不同的动作或执行结果。(6)消息(message)消息是指一个对象向另一个对象发出的请求。消息包括消息名、接受消息的对象名,

19、操作名、输入信息和回答信息等。面向对象技术使对象之间是相互独立的,对象之间的消息传递实现了通信机制。52第一章 GIS程序设计基础3.UML方法UML是一种面向对象的建模语言,它统一了Booch、OMT和OOSE等方法中的概念和语法,提供了面向对象模型元素的定义与表示,已成为面向对象软件建模的标准语言。UML提供了5种视图和10种模型图,以图型的方式实现系统建模,过程清晰直观,与程序设计语言无关。53第一章 GIS程序设计基础(1)构成视图:用例视图、逻辑视图、组件视图、进程视图、配置视图。模型图:用例图、类图、对象图、包图、顺序图、协作图、状态图、活动图、组件图、配置图。模型元素:包括事物和

20、事物之间的关系。公共机制:为模型元素提供注释、修饰、规格说明、通用划分和扩展机制。54第一章 GIS程序设计基础UML模型元素符号55第一章 GIS程序设计基础关系模型元素56第一章 GIS程序设计基础(2)UML的模型图用例图:由用例、参与者及其之间的关系组成用例图的组成57第一章 GIS程序设计基础58第一章 GIS程序设计基础类图:描述系统中涉及的所有类以及类之间的关系。类的图形符号 “Teacher”类59第一章 GIS程序设计基础类的关联关系类的泛化关系类的多重继承60第一章 GIS程序设计基础类的依赖关系类的聚合关系类的组合关系61第一章 GIS程序设计基础对象图:与类图相似,是在

21、类图基础上实例化形成的。与类图不同的是,在对象名下方需加下划线,属性及操作中的参数有具体值。对象的图形符号类“Teacher”的对象图62第一章 GIS程序设计基础包图:若干个包以及包之间的关系组成。包是一种分组机制,其将一些相关的类集合为一个包,相当于一个子系统。63第一章 GIS程序设计基础状态图:对动态特征进行建模,是对类的补充描述。一个状态图仅包含一个起始状态,可以包含多个终止状态。状态图的基本图符64第一章 GIS程序设计基础活动图:对系统的动态行为建模,描述活动的顺序,主要表现出活动之间的控制流,本质上一种流程图。活动图的基本图符65第一章 GIS程序设计基础66第一章 GIS程序

22、设计基础顺序图:描述对象之间动态的交互关系,主要体现对象之间进行消息传递的时间顺序。顺序图的基本图符67第一章 GIS程序设计基础协作图:描述相互合作对象之间的交互关系与连接关系,其与顺序图是UML的2中交互图。在实际应用中,若强调时间和顺序,则选择顺序图,若强调对象之间的相互关系,则选择协作图。68第一章 GIS程序设计基础“AddCourse”协作图69第一章 GIS程序设计基础组件图:显示组件及其组件之间的依赖关系。组件的类型包括源代码、二进制组件和可执行组件。组件图的图符70第一章 GIS程序设计基础“选课管理子系统”组件图71第一章 GIS程序设计基础4.面向对象设计系统设计阶段将对

23、系统分析阶段产生的模型进行设计与完善,并转换为系统设计模型。系统设计的内容包括系统对象设计、系统动态模型设计和系统体系结构设计。对象设计包括对象服务及标准说明设计、类库设计和组件选择、对象设计分类重组、对象设计优化等。72第一章 GIS程序设计基础(1)对象类动态模型建模动态模型用于描述系统的动态行为,体现系统在运行期间的动态交互。动态模型分为交互模型和状态模型,其中交互模型包括顺序图与协作图,状态模型包括状态图与活动图。73第一章 GIS程序设计基础(2)设计案例图书管理员处理图书借阅顺序图74第一章 GIS程序设计基础图书管理员处理图书借阅协作图75第一章 GIS程序设计基础借阅者账户状态

24、图76第一章 GIS程序设计基础四、 GISGIS软件的开发模式软件的开发模式1 1、常见的三种开发模式、常见的三种开发模式 独立开发独立开发指不依赖于任何指不依赖于任何GISGIS工具软件,从空间数工具软件,从空间数据的采集、编辑到数据的处理分析及结果输出,据的采集、编辑到数据的处理分析及结果输出,所有的算法都由开发者独立设计,然后选用某所有的算法都由开发者独立设计,然后选用某种程序设计语言,如种程序设计语言,如Visual C+Visual C+、DelphiDelphi等,等,在一定的操作系统平台上编程实现。在一定的操作系统平台上编程实现。 这种方式的好处在于无须依赖任何商业这种方式的好

25、处在于无须依赖任何商业GISGIS工具软件,减少了开发成本,但一方面对于大工具软件,减少了开发成本,但一方面对于大多数开发者来说,需要具有教强的开发能力。多数开发者来说,需要具有教强的开发能力。77第一章 GIS程序设计基础单纯二次开发单纯二次开发指借助于指借助于GISGIS工具软件提供的开发语言进行工具软件提供的开发语言进行应用系统开发。应用系统开发。GISGIS工具软件大多提供了可供工具软件大多提供了可供用户进行二次开发的宏语言,如用户进行二次开发的宏语言,如ESRIESRI的的ArcGISArcGIS提供了提供了VBAVBA开发环境,开发环境,MapInfoMapInfo公司研制的公司研

26、制的MapInfo ProfessionalMapInfo Professional提供了提供了MapBasicMapBasic语言等语言等等。等。 用户可以利用这些宏语言,以原用户可以利用这些宏语言,以原GISGIS工具工具软件为开发平台,开发出自己的针对不同应用软件为开发平台,开发出自己的针对不同应用对象的应用程序。这种方式省时省心,易上手,对象的应用程序。这种方式省时省心,易上手,但进行二次开发的宏语言,功能较弱,只能是但进行二次开发的宏语言,功能较弱,只能是对原对原GISGIS工具软件进行扩展。工具软件进行扩展。78第一章 GIS程序设计基础集成二次开发集成二次开发 OLE (Obje

27、ct Link and Embed,OLE (Object Link and Embed,对象链接和嵌入对象链接和嵌入) ) 采用采用OLE AutomationOLE Automation技术,用软件开发工具开发前技术,用软件开发工具开发前台可执行应用程序,以台可执行应用程序,以OLEOLE自动化方式启动自动化方式启动GISGIS工具软件工具软件如如ArcGISArcGIS、MapInfoMapInfo等在后台执行,利用回调技术动态获等在后台执行,利用回调技术动态获取其返回信息,实现应用程序中的地理信息处理功能;取其返回信息,实现应用程序中的地理信息处理功能;GISGIS控件开发(组件开发)

28、控件开发(组件开发)利用利用GISGIS工具软件生产厂家提供的建立在工具软件生产厂家提供的建立在OCXOCX技术基础上技术基础上的的GISGIS功能控件,如功能控件,如ESRIESRI的的ArcObjectsArcObjects、ArcEngineArcEngine、MapInfoMapInfo公司的公司的MapXMapX等,在等,在VCVC、VBVB等编程工具编制的应用等编程工具编制的应用程序中,直接将程序中,直接将GISGIS控件嵌入其中,实现地理信息系统的控件嵌入其中,实现地理信息系统的各种功能。各种功能。79第一章 GIS程序设计基础2.三种开发方式比较80第一章 GIS程序设计基础3

29、. GIS软件开发模式的选择考虑系统本身的性质和特点考虑系统本身的性质和特点分析二次开发和底层开发的特点分析二次开发和底层开发的特点估计设计者自身的具体情况估计设计者自身的具体情况 对于一些对于一些大型的大型的大型的大型的GISGIS系统系统系统系统开发项目开发项目,如一个地区的综合信息管理如一个地区的综合信息管理系统等系统等,因为其图形平台、容量、可靠性等各方面的要求因为其图形平台、容量、可靠性等各方面的要求,一般易一般易于选择已经成熟的于选择已经成熟的GIS系统开发工具(二次开发)来组织开发。系统开发工具(二次开发)来组织开发。 而对于一些而对于一些小型的小型的小型的小型的GISGIS系统系统,特别是一些以数据管理、决策研究、特别是一些以数据管理、决策研究、辅助设计等具体应用为主的系统辅助设计等具体应用为主的系统,或者在某个行业中需要推广使用或者在某个行业中需要推广使用的实用系统,则选择底层开发的方法。的实用系统,则选择底层开发的方法。81第一章 GIS程序设计基础五、GIS软件开发内容界界面面设设计计空空间间索索引引模模块块开开发发文文件件管管理理模模块块开开发发图图形形显显示示模模块块开开发发图图形形编编辑辑模模块块开开发发数数据据库库模模块块开开发发空空间间分分析析模模块块开开发发符符号号模模块块开开发发开发内容开发内容82

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号