1、GISGIS程序设计全册配套最完整程序设计全册配套最完整 精品课件精品课件1 1 GISGIS程序设计概述程序设计概述 主要内容主要内容 一一软件类型与形式软件类型与形式 二二程序开发语言程序开发语言 三三软件即服务软件即服务 四四GISGIS程序设计分类程序设计分类 五五GISGIS对程序设计的要求对程序设计的要求 六六本课程教学内容本课程教学内容 一、软件类型与形式一、软件类型与形式 n IEEE对软件的定义(1983): 软件是计算机程序、方法、规则、相关的文 档资料以及在计算机上运行的程序时所必需的数 据的集合。 程序程序:是计算机需要遵照执行的一系列指令,它作为一:是计算机需要遵照执
2、行的一系列指令,它作为一 种具有逻辑结构的信息,精确而完整地描述计算任务中种具有逻辑结构的信息,精确而完整地描述计算任务中 的处理对象和处理规则。的处理对象和处理规则。 方法、规则方法、规则:通常是在文档中说明并在程序中实现的。:通常是在文档中说明并在程序中实现的。 文档文档:开发、使用和维护程序所需要的图文资料。:开发、使用和维护程序所需要的图文资料。 数据数据:向一个程序提供的输入。:向一个程序提供的输入。 软件软件 = = 程序(方法)程序(方法) + + 数据数据+ + 文档文档 一、软件类型与形式一、软件类型与形式 软件类型软件类型 n 系统软件系统软件:居于计算机系统中最靠近硬件的
3、一层,:居于计算机系统中最靠近硬件的一层, 其他软件一般通过系统软件发挥作用。如操作系其他软件一般通过系统软件发挥作用。如操作系 统、编译程序、网络软件系统、数据库系统、人统、编译程序、网络软件系统、数据库系统、人 机交互软件系统等。机交互软件系统等。 n 支撑软件支撑软件:支撑软件的开发与维护的软件工具和:支撑软件的开发与维护的软件工具和 软件开发环境。如环境数据库、各种接口软件和软件开发环境。如环境数据库、各种接口软件和 工具组等。工具组等。 n 应用软件应用软件:特定应用领域专用的软件。:特定应用领域专用的软件。 GISGIS软件软件 一、软件类型与形式一、软件类型与形式 软件表现形式软
4、件表现形式 桌面桌面 组件组件 浏览器浏览器 服务器服务器 嵌入式嵌入式 一、软件类型与形式一、软件类型与形式 软件运行环境软件运行环境 一、软件类型与形式一、软件类型与形式 多种表现形式软件的挑战多种表现形式软件的挑战 多种语言多种语言 多种形式多种形式开发方式开发方式 多种接口多种接口 多个平台多个平台 . 以不变应万变以不变应万变与时俱进与时俱进 一、软件类型与形式一、软件类型与形式 C+ 程序设计的方法论程序设计的方法论 OPPDesign Pattern 经验经验实践实践功夫功夫 二、程序设计语言二、程序设计语言 文章文章汉语、英语汉语、英语字、词、语法结构字、词、语法结构写文章写文
5、章 程序程序计算机语言计算机语言数据表示、表达式、语句结构数据表示、表达式、语句结构编程序编程序 u程序设计语言程序设计语言是人与计算机之间交换信息的工具是人与计算机之间交换信息的工具. 第一代语言(1GL): 汇编语言语言 高级语言 非过程性语言 自然语言语言 机器语言 第二代语言(2GL): 第三代语言(3GL): 第四代语言(4GL): 第五代语言(5GL): 与与 硬硬 件件 环环 境境 无无 关关 二、程序设计语言二、程序设计语言 过程性语言过程性语言 n 带有过程性特征的语言称为过程性语言。 用过程 性语言编写的程序包含一系列的描述,告诉计算 机如何执行这些过程来完成特定的工作。程
6、序通 常有一个起点和终点,执行的流程呈直线型,至 上而下顺序执行。比如FORTRAN、Pascal、C语言。 二、程序设计语言二、程序设计语言 脚本语言脚本语言 n 脚本语言(Script Language)是一种简单的描述 性语言,它的出现较好地解决了Web页的动态交互 问题。它通过一个标记或 % 嵌入到HTML 页中。脚本语言分为客户端和服务端两个不同的 版本,客户端实现改变Web页外观的功能,服务器 端完成输入验证、表单处理、数据库查询等功能。 n 脚本需要一个主机应用系统依附来运行,不能 单机运行。例如用HTML标签为显示网页编写一 个脚本,则脚本由网络浏览器解释,这里的网 络浏览器就
7、是主机应用系统,没有它HTML脚本 就不能运行。 二、程序设计语言二、程序设计语言 脚本语言示例脚本语言示例 WelcomeWelcome 欢迎走进计算机世界欢迎走进计算机世界 % Dim computerdate,cihdateDim computerdate,cihdate computerdate=Datecomputerdate=Date cihdate=DateValue (April 25)cihdate=DateValue (April 25) If computerdate=cihdate Then If computerdate=cihdate Then Response.w
8、rite n min(10,20); min(10.0, 20.0); n 模板实例化 由参数决定 隐式实例化 显式实例化 min(10,20); 函数模板函数模板 n Why ? n For instance Macro: # define max(a,b) (a)(b)?(a):(b) Overload: int max(int a,int b) return ab?a:b; float max(float a,float b) return ab?a:b; 异常处理异常处理(exception handling) n 错误处理机制、错误代码隔离 n Throw (raise) an ex
9、ception Throw expression 类似于return 语句 n Try、catch语句(handler) try catch(type) 或 catch(type obj) n 类似于函数调用 但是类型匹配发生在runtime Object-Based Programming n class实现数据封装 n 对象 n 构造函数与析构函数 n 嵌套类 n 类中成员初始化 n 虚拟函数 n 类中运算符重载 n 类模板 this指针指针 n 在类的内部指向类自身的指针 n 在每个成员函数中,this指针提供了使用上的方便 n this指针把类的多个实例对象区分开来 模板模板 n函数模
10、板 即以数据类型为“参数”的函数 例如: template Swap( T temp = a; a = b; b = temp; n 类模板类模板( (模板类或类生成器模板类或类生成器) ) 即以数据类型为即以数据类型为“参数参数”的类的类 例如:例如: template class template class StackStack private : private : T poolmaxNum; T poolmaxNum; int sp; int sp; public: public: Stack(); Stack(); void Push(T x); void Push(T x); T
11、 Pop(); T Pop(); BOOL IsEmpty() const; BOOL IsEmpty() const; BOOL IsFull() const; BOOL IsFull() const; ; ; 使用:使用: Stack intStack;Stack intStack; Stack float Stack; Stack float Stack; 从面向过程转换到面向对象从面向过程转换到面向对象 n 面向过程以功能为组织单元面向过程以功能为组织单元 在在C C语言中以函数作为功能单元;语言中以函数作为功能单元; 通过数据结构来描述具体的问题;通过数据结构来描述具体的问题; 数据
12、在功能数据在功能( (函数函数) )之间以参数的形式被传送。之间以参数的形式被传送。 n 面向对象面向对象 用类用类classclass封装数据以及与数据相关的操作;封装数据以及与数据相关的操作; 用类的继承性来实现类的重用性;用类的继承性来实现类的重用性; 多态性。多态性。 Object-Oriented Programming n CShape n CPoint n CLine n CCircle n CArc n CText CShape CPointCLineCCircleCArcCText 多态性和虚拟函数多态性和虚拟函数 n 多态性是面向对象的一个支柱 允许程序在实施对象的操作时,
13、允许对象按不同 的方式完成不同类型对象的操作;不同类型对 象有自己实现操作的方法。 n 虚拟函数 虚拟函数实现了多态性。 说明:在函数说明之前加上关键字virtual 在基类的说明中,定义虚拟函数: virtual void Display(); 调用: CShape *pShape = GetCurrentShape(); pShape-Display(); 关于程序语言学习关于程序语言学习 克服当前程序语言学习的克服当前程序语言学习的“三个三个”主义主义 拿来主义:缺乏自己的思考拿来主义:缺乏自己的思考 本本主义:为了考证而学习本本主义:为了考证而学习 迷茫主义:不知道该怎么培养自己的动手
14、能力迷茫主义:不知道该怎么培养自己的动手能力 想学英语一样想学英语一样 学程序语言!学程序语言! n 象学英语一样学VC+ n “授人以鱼不如授人以渔” 语言的学习能力胜于学习语言本身 n 强制动手编程:项目的压力 n 强制自主学习:积累与成功感 n 学会利用资源:自己实现别人的程序 关于程序语言学习关于程序语言学习 质疑 猜测实践 验证 动手实践动手实践! ! 2、COM 程序、组件和插件程序、组件和插件 系统中一种物理系统中一种物理 的、可代替的部的、可代替的部 件、它封装了实件、它封装了实 现并提供了一系现并提供了一系 列可用的接口。列可用的接口。 组件就是对象,组件就是对象, 是对数据
15、和方法是对数据和方法 的简单封装的简单封装 程序程序(EXE) 组件组件(COM)(COM) 插件插件(DLL)(DLL) 应用程序是指为了完 成某项或某几项特定 任务而被开发运行于 操作系统之上的计算 机程序。运行在用户运行在用户 模式,它可以和用户模式,它可以和用户 进行交互,具有可视进行交互,具有可视 的用户界面的用户界面 插件是一种遵插件是一种遵 循一定规范的循一定规范的 应用程序接口应用程序接口 编写出来的程编写出来的程 序。序。 运行在应运行在应 用程序提供的用程序提供的 界面上界面上 扩展扩展 基础基础 二次开发二次开发 控件控件 可视化的组件可视化的组件 以以ArcGIS体系来
16、说明体系来说明 以以ArcGIS体系来说明体系来说明 以以ArcGIS体系来说明体系来说明 插件插件 以以ArcGIS体系来说明体系来说明 组件的二次开发组件的二次开发 像用像用MFC下下 控件一样使用控件一样使用 组件的二次开发组件的二次开发 举例举例 如何封装组件如何封装组件 学会封装组件的必要性学会封装组件的必要性解决解决软件发展中遇到的问题 n 软件的复杂度增加 代码开发管理 n 软件升级和更新 牵一而发动全身? n 分布式软件的发布和配置 用户需要培训,程序员和设计人员更需要 n 依赖于全才开发人员 软件层次划分 n 软件的可扩展性 用户可定制、脚本支持 n 与标准接轨:如Web B
17、/S 如何封装组件如何封装组件 n 现实:软件工程中的合作越来越普遍 n 需要利用别人的资源 n 需要以资源的方式提供 n 同一项目组的合作 学会封装组件的必要性学会封装组件的必要性现实中实际项目和工作的要求现实中实际项目和工作的要求 如何封装组件如何封装组件 一般动态连接库的开发与使用一般动态连接库的开发与使用 由用户自己开发的、可以加入到最终用户(包括用户本人和由用户自己开发的、可以加入到最终用户(包括用户本人和 其他使用该模块的人)应用程序中提供某一特定功能的函数其他使用该模块的人)应用程序中提供某一特定功能的函数 和类的集合。和类的集合。 包括:静态连接库和动态连接库包括:静态连接库和
18、动态连接库 如何封装组件如何封装组件 静态连接库的开发与使用静态连接库的开发与使用 静态连接库提供了函数的完整的目标代码,如果程序调用静静态连接库提供了函数的完整的目标代码,如果程序调用静 态连接库中的函数,则在进行连接时连接程序将静态连接库态连接库中的函数,则在进行连接时连接程序将静态连接库 中所包含的该函数的代码拷贝至运行文件中。中所包含的该函数的代码拷贝至运行文件中。 开发与使用开发与使用 调试调试 #ifndef _MYLIB_H #define _MYLIB_H #endif 如何封装组件如何封装组件 动态连接库的开发与使用动态连接库的开发与使用 动态连接库是一个可执行模块,其包含的
19、函数可以由动态连接库是一个可执行模块,其包含的函数可以由 Windows应用程序调用以执行一些功能。在程序连接动态连接应用程序调用以执行一些功能。在程序连接动态连接 库中的函数时,连接程序并不将包含在动态连接库中的函数的库中的函数时,连接程序并不将包含在动态连接库中的函数的 目标代码拷贝至运行文件,而只是简单地记录了函数的位置信目标代码拷贝至运行文件,而只是简单地记录了函数的位置信 息,程序在执行时,即可找到该函数的目标代码。因为只是在息,程序在执行时,即可找到该函数的目标代码。因为只是在 执行时才得到真正的连接,因此称为动态连接。执行时才得到真正的连接,因此称为动态连接。 开发与使用 调试
20、/DEF 文件文件 LIBRARY DLLLIB EXPORTS TestDllLib TestDllMFCConnect 如何封装组件如何封装组件 推荐动态连接库的开发与使用推荐动态连接库的开发与使用 1、微软的扩展、微软的扩展 DLL 2、输出类方式、输出类方式 AFX_CLASS_EXPORT 如何封装组件如何封装组件 ActiveX的开发与使用的开发与使用 ActiveX是在是在MS与与JAVA抗争时产生的一个新名词(抗争时产生的一个新名词(1996 年年3月),月),ActiveX技术的前身是技术的前身是OLE技术是技术是MS为了适应为了适应 Internet的发展对的发展对OLE进
21、行的扩展(当时的含义是进行的扩展(当时的含义是“Activate the Internet”),当时只是为了发展一种小型的可从网络上快),当时只是为了发展一种小型的可从网络上快 速下载的可重用组件。速下载的可重用组件。 现在的现在的ActiveX控件等价与以前的控件等价与以前的OLE控件或控件或OCX,一个典,一个典 型的控件包括设计时和运行时的用户界面,唯一的型的控件包括设计时和运行时的用户界面,唯一的IDispatch接接 口定义了控件的属性和方法,唯一的口定义了控件的属性和方法,唯一的IConnectionPoint接口定接口定 义控件可引发的事件。一个控件可以在容器中运行,所以从运行义
22、控件可引发的事件。一个控件可以在容器中运行,所以从运行 的角度看它类似与一个的角度看它类似与一个DLL。由于在。由于在IE中添加了对控件的支持,中添加了对控件的支持, 所以你可以在所以你可以在WEB页面中通过页面中通过VBScript对控件进行操纵。对控件进行操纵。 如何封装组件如何封装组件 图像显示控件开发实践图像显示控件开发实践 3、DBA 数据库标准接口数据库标准接口 传统方式传统方式 数据库标准接口数据库标准接口 数据库接口数据库接口 数据库标准接数据库标准接 口口 数据库标准接口数据库标准接口 1 使用户程序有很高使用户程序有很高 的互操作性,相同的互操作性,相同 的目标代码适用于的
23、目标代码适用于 不同的不同的DBMS 2 由于由于ODBC的开放的开放 性,它为程序集成性,它为程序集成 提供了便利,为客提供了便利,为客 户机户机/服务器结构服务器结构 提供了技术支持提供了技术支持 3 由于应用与底层网由于应用与底层网 络环境和络环境和DBMS分分 开,简化了开发维开,简化了开发维 护上的困难护上的困难 数据库接口技术的分类数据库接口技术的分类 微软最新的数微软最新的数 据访问技术据访问技术 , 用以实现访问用以实现访问 关系或非关系关系或非关系 数据库中的数数据库中的数 据。据。 ADO Microsoft推出推出 的最早的整合的最早的整合 异质数据库的异质数据库的 数据
24、库接口,数据库接口, 现在已成为一现在已成为一 种事实上的标种事实上的标 准。准。 ODBC 是执行是执行SQL语语 句的句的Java API ,由一组用,由一组用 Java语言编写语言编写 的类与接口组的类与接口组 成。成。 JDBC VC+数据库访问方式数据库访问方式 n1 1、ODBC API ODBC API n2 2、MFC ODBCMFC ODBC n3 3、DAO DAO n4 4、OLE DBOLE DB n5 5、ADOADO VC+数据库访问方式数据库访问方式 n1 1、ODBC APIODBC API ODBC(Open Database Connectivity)是被广
25、泛应 用的用于数据库访问技术的应用程序编程接口 ,ODBC 是为最大的互用性而设计的,即一个应用程序用相同的 源代码能够访问不同的数据库管理系统(DBMS)。 VC+数据库访问方式数据库访问方式 n2 2、MFC ODBCMFC ODBC MFC ODBC(Microsoft Foundation Classes ODBC) ,ODBC虽然提供了一种统一访问数据库的接 口,但是直接使用ODBC API创建应用程序需要编制大 量的代码所以,Visual C+中提供了MFC ODBCMFC ODBC类,类, 在在MFC ODBCMFC ODBC类中封装了类中封装了ODBC APIODBC API,
26、提供了面向对象的 数据库类。这使创建数据库应用程序的过程大大简化。 VC+数据库访问方式数据库访问方式 n3 3、DAODAO DAO(Data Access Object) ,DAO(数据库访 问对象)提供了一种通过程序代码创建和操作数据 库的机制。多个 DAO对象构成一个体系结构,在这 个结构中,各个DAO对象协同工作,通过Microsoft Jet数据库访问数据库中的数据和数据库的结构定义。 MFC DAO是微软推出的用于在Visual C+中访问 Microsoft Jet数据库文件(*mdb)的强有力的数 据库开发工具,它通过对DAO对象的封装,向程序员 提供了丰富的数据库访问和数据
27、库操纵手段。 VC+数据库访问方式数据库访问方式 n4 4、OLE DBOLE DB OLE DB(0bject Link and Embedding Database) ,OLE DB提供企业网络级的通用数据集成, 从主机到桌面,而不管数据的种类,OLEDB 比ODBC对 数据的操纵更加普遍也更加有效,因为它允许更多种 类的数据,并且它是基于COM模型的。 OLE DB技术是Visual C+开发数据库应用程序所 提供的新技术,与传统的数据库访问技术相比,OLE DB有两种重要的改进:OLE DB技术基于COM接口和OLE DB为所有的文件系统包括关系数据库和非关系数据库 提供了一种统一的接
28、口。这些特性使OLE DB技术比 传统的数据库访问技术更加优越。 VC+数据库访问方式数据库访问方式 n5 5、ADOADO ADO (ActiveX Data Object),ADO是面向对 象的OLE DB,它继承了OLE DB技术的优点,并且, ADO对OLE DB 接口作了封装,定义了ADO对象, 使应用程序的开发得到简化,ADO技术属于数据库访 问的高层接口。 创建创建ADO数据库访问程序数据库访问程序 n 1 1 创建工程框架创建工程框架 n 2 2 在工程中插入在工程中插入ADOADO控件控件 n 3 3 导入导入ADO DataADO Data控件和控件和Data GridDa
29、ta Grid控件控件 n 4 4 设置设置ADO DataADO Data控件属性控件属性 n 5 5 设置设置ADO DataGridADO DataGrid控件的属性控件的属性 4、并行计算、并行计算 并行计算并行计算 并行计算(Parallel Computing) fu fu 并行计算并行计算 并行计算(Parallel Computing) n 并行时代已经到来 频率提升受到限制 多核CPU成为主流并向着更多的核发展 n 为什么我们需要并行计算? 更快的完成计算(更低的延迟) 处理更大规模的问题(更高的吞吐量) 并行计算并行计算 fu fu network Parallel Pro
30、gramming Parallel Algorithm 并行计算并行计算 n 定义:通过多核或网络相互联接的两个以上的处 理机相互协调,同时计算同一个任务的不同部分, 从而提高问题求解速度,或者求解单机无法求解 的大规模问题。 n 两个目的: 提高速度; 扩大问题求解规模。 多核多核CPU并行计算并行计算 n多线程 n多进程 nOpenMP 用户在使用用户在使用3232位位WindowsWindows操作系统如操作系统如Windows XPWindows XP 时,能够同时运行几个程序。这种能力称为多时,能够同时运行几个程序。这种能力称为多 任务处理。多任务其实就可以理解为系统可以任务处理。多
31、任务其实就可以理解为系统可以 同时运行多个进程。同时运行多个进程。 进程(进程(ProcessProcess)是一个运行的程序,其由独立)是一个运行的程序,其由独立 的虚拟内存、代码、文件句柄和其他系统资源的虚拟内存、代码、文件句柄和其他系统资源 组成。简单的说,进程是操作系统分配内存地组成。简单的说,进程是操作系统分配内存地 址空间的基本单位。址空间的基本单位。 线程(线程(ThreadThread)是操作系统分配处理器时间的)是操作系统分配处理器时间的 最小单元。一个进程必须包含一个线程,称之最小单元。一个进程必须包含一个线程,称之 为主线程。进程中的线程是并行执行的。每个为主线程。进程中
32、的线程是并行执行的。每个 线程占用线程占用CPUCPU的时间由系统来划分。的时间由系统来划分。 多核多核CPU并行计算并行计算 多核多核CPU并行计算并行计算 假如有一个工厂(应用程序)假如有一个工厂(应用程序) 里面有很多的生产线(进里面有很多的生产线(进 程)。有一道生产线上的某程)。有一道生产线上的某 一道作业工序(线程),每一道作业工序(线程),每 个人都会这个工序。当有订个人都会这个工序。当有订 单过来时只有一个人处理这单过来时只有一个人处理这 个工序的话工厂的效率很低,个工序的话工厂的效率很低, 如果有多个人同时处理的话,如果有多个人同时处理的话, 那么效率就提高了。但是订那么效率
33、就提高了。但是订 单中的数量是有限的,为保单中的数量是有限的,为保 证都能挣到钱,那么工厂的证都能挣到钱,那么工厂的 领导还要做一些安排。领导还要做一些安排。 超出能力的线超出能力的线 程相反会影响程相反会影响 到效率到效率 多核多核CPU并行计算并行计算 多线程指的是在一个程序中可以定义多个线多线程指的是在一个程序中可以定义多个线 程并同时运行它们,每个线程可以执行不同程并同时运行它们,每个线程可以执行不同 的任务。的任务。 与进程不同的是,同类多线程共享一块内存与进程不同的是,同类多线程共享一块内存 空间和一组系统资源,所以系统创建多线程空间和一组系统资源,所以系统创建多线程 开销相对较小
34、。因此也称线程为轻负荷进程。开销相对较小。因此也称线程为轻负荷进程。 多进程就是多个多进程就是多个EXEEXE程序一起运行,只需要控程序一起运行,只需要控 制好制好EXEEXE程序间的通讯就可以实现并行处理,程序间的通讯就可以实现并行处理, 特别提醒的是每个特别提醒的是每个EXEEXE有单独的内存空间,因有单独的内存空间,因 此可用内存比较大,非常适应于影像处理。此可用内存比较大,非常适应于影像处理。 多核多核CPU并行计算并行计算 n (1)(1)多线程技术使程序的响应速度更快多线程技术使程序的响应速度更快 , ,因为用户界面可以在因为用户界面可以在 进行其它工作的同时一直处于活动状态进行其
35、它工作的同时一直处于活动状态; ; n (2)(2)当前没有进行处理的任务时可以将处理器时间让给其它任当前没有进行处理的任务时可以将处理器时间让给其它任 务务; ; n (3)(3)占用大量处理时间的任务可以定期将处理器时间让给其它占用大量处理时间的任务可以定期将处理器时间让给其它 任务任务; ; n (4)(4)可以随时停止任务可以随时停止任务; ; n (5)(5)可以分别设置各个任务的优先级以优化性能。可以分别设置各个任务的优先级以优化性能。 n 在以下情况下在以下情况下, ,最适合采用多线程处理最适合采用多线程处理: : n (1)(1)耗时或大量占用处理器的任务阻塞用户界面操作耗时或
36、大量占用处理器的任务阻塞用户界面操作; ; n (2)(2)各个任务必须等待外部资源各个任务必须等待外部资源 ( (如远程文件或如远程文件或 InternetInternet连连 接接) )。 n (3)(3)提高数据处理的效率提高数据处理的效率 多线程优势多线程优势 多核多核CPU并行计算并行计算 多进程缺点多进程缺点 n (1)(1)等候使用共享资源时造成程序的运行速度变慢。等候使用共享资源时造成程序的运行速度变慢。 n (2)(2)对线程进行管理要求额外的对线程进行管理要求额外的 CPUCPU开销。开销。 n (3)(3)线程的死锁。线程的死锁。 n (4)(4)对公有变量的同时读或写,
37、会导致无法预知的错误对公有变量的同时读或写,会导致无法预知的错误 多线程实例多线程实例 线程启动线程启动 n AfxBeginThreadAfxBeginThread,CreateThreadCreateThread,_beginThread_beginThread n 线程终止线程终止 n AfxEndThreadAfxEndThread,ExitThreadExitThread,TerminateThreadTerminateThread n 线程间的通信与同步线程间的通信与同步 n 全局变量、消息传递、事件、互斥、信号灯、等待函数全局变量、消息传递、事件、互斥、信号灯、等待函数 n 线程
38、函数线程函数 n 线程函数的固定形式:线程函数的固定形式: n UINT FunctionName (LPVOID pParam)UINT FunctionName (LPVOID pParam) n FunctionName FunctionName是用户自定义的函数名,是用户自定义的函数名,LPVOIDLPVOID表示指向空类型的表示指向空类型的 指针,相当于指针,相当于voidvoid* *,必要时需要把这个指针转换成所需要的类型。,必要时需要把这个指针转换成所需要的类型。 函数的返回值将作为线程的结束码,线程函数结束后线程就自动终止。函数的返回值将作为线程的结束码,线程函数结束后线程就
39、自动终止。 函数的返回值如果为函数的返回值如果为0 0,表示线程函数正常结束。,表示线程函数正常结束。 多线程实例多线程实例 定义多线程计算数据结构定义多线程计算数据结构 算法模块进行并行处理改造算法模块进行并行处理改造 利用系统函数获取利用系统函数获取CPUCPU核数核数 创建多个计算线程及其句柄创建多个计算线程及其句柄 等待计算线程完成计算等待计算线程完成计算 释放句柄,清空内存释放句柄,清空内存 设计要点设计要点 图像处理多线程程序设计图像处理多线程程序设计 OpenMP OpenMPOpenMP是作为共享存储标准而问世的。它是为在多处理机上编是作为共享存储标准而问世的。它是为在多处理机
40、上编 写并行程序而设计的一个应用编程接口。它包括一套编译指导写并行程序而设计的一个应用编程接口。它包括一套编译指导 语句和一个用来支持它的函数库。语句和一个用来支持它的函数库。 要在Visual C+ 2005 中使用OpenMP只要将 Project 的Properties中C/C+里Language的OpenMP Support开启(参数为 /openmp),就可以让 VC+2005 在编译时支持OpenMP 的语法了;而在编 写使用OpenMP 的程序时,则需要先include OpenMP 的头文件:omp.h。 要将 for 循环中并行化处理,非常简单,只要 在前面加上一行 #pra
41、gma omp parallel for 就够了。 MapInfo MapInfo 开发基础开发基础 主要内容主要内容 一一MapInfoMapInfo介绍介绍 二二MapInfoMapInfo数据模型数据模型 三三MapBasicMapBasic二次开发二次开发 四四MapInfoMapInfo组件组件MapXMapX 五五MapXMapX开发实践开发实践 1、MapInfo介绍介绍 MapInfo Overview MapInfo Professional是一套强大的基于Windows平 台的地理信息系统软件。使用MapInfo Professional,商业分析专家和GIS专家可以方便
42、的将数据和地理信息的关系直观的展现。MapInfo Professional 6.5版为新老用户提供了在数据维护 、可视化、数据展现、输出和可用性方面的增强。 MapInfo公司将MapInfo的市场定位总结为一个等式 : MapInfo= Mapping+InformationMapInfo= Mapping+Information MapInfo Overview 中小型中小型GIS 平台平台 MapInfo Overview MapInfo 中国办事处中国办事处 北京北京 青鸟商务代理商青鸟商务代理商 电信,政府,商务 北京,上海,广州 地区代理商地区代理商 上海数字位图信息科技有限公司
43、 广州昱图计算机技术有限公司 四川太平洋电子科技发展有限公司(成都) 陕西高图科技发展有限公司(西安) 基于位置的情报基于位置的情报 扩展的市场扩展的市场 企业级 特定市场 商务流程 技术能力 MapInfo 所能提供的:所能提供的: 合成的能力 平台和数据 行业解决方案 位置基础 MapInfo Overview MapInfo Overview MapInfo Professional MapInfo Overview MapInfo Professional + MapBasic MapBasic为为Professional开发提供的内嵌开发语言。开发提供的内嵌开发语言。 MapBasi
44、c编程语言可创建定制化的地图应用、增加编程语言可创建定制化的地图应用、增加 MapInfoProfessional的功能、开发可重复使用的工具、把的功能、开发可重复使用的工具、把 MapInfoProfessional整合到其他应用中。整合到其他应用中。 MapInfo Overview MapX MapInfo Overview MapXtreme2005 MapXtreme2005完全基于微软的完全基于微软的.NET架构开发的架构开发的GIS开发引开发引 擎产品,可以使用户基于同一模型开发出擎产品,可以使用户基于同一模型开发出B/S和和C/S的应用。的应用。 MapXtreme2005产品
45、具体包括数据处理和地理分析、地图样产品具体包括数据处理和地理分析、地图样 式、管理投影和坐标系统、控件和标准工具、性能优化状态保式、管理投影和坐标系统、控件和标准工具、性能优化状态保 持、地理编码以及路径分析的客户端支持等持、地理编码以及路径分析的客户端支持等 MapInfo Overview MapXtreme For Java MapInfo Overview MapX Mobile MapXMobile是一个可以用在是一个可以用在PocketPC的无线应用地图开发的无线应用地图开发 平台,譬如平台,譬如Compaq的的iPAQ和和HP的的Jornada.。它是一个开发。它是一个开发 工具
46、,可以让我们的客户开发新的移动地图软件,是用户进行工具,可以让我们的客户开发新的移动地图软件,是用户进行 无线地图应用系统开发的理想工具。无线地图应用系统开发的理想工具。 MapInfo Overview Spatial Ware 2、MapInfo 数据模型数据模型 Mif交换格式交换格式 .MIF的文件,它主要用来保存空间对象的几何数据;扩展名的文件,它主要用来保存空间对象的几何数据;扩展名 为为.MID的文件,它主要用来保存与几何数据相对应的属性数据;的文件,它主要用来保存与几何数据相对应的属性数据; MapInfo提供的交换格式提供的交换格式 Tab文件文件 MapInfo采用双数据库
47、存储模式,即其空间数据与属性数据是采用双数据库存储模式,即其空间数据与属性数据是 分开来存储的。属性数据存储在关系数据库的若干属性表中,而分开来存储的。属性数据存储在关系数据库的若干属性表中,而 空间数据则以空间数据则以MapInfo的自定义格式保存于若干文件中,二者通的自定义格式保存于若干文件中,二者通 过一定的索引机制联系起来。为了提高查询和处理效率,过一定的索引机制联系起来。为了提高查询和处理效率, MapInfo采用层次结构对空间数据进行组织,即根据不同的专题采用层次结构对空间数据进行组织,即根据不同的专题 将地图分层(图层还可以分成若干图幅),每个图层存储为若干将地图分层(图层还可以
48、分成若干图幅),每个图层存储为若干 个基本文件。个基本文件。 (1) 属性数据的表结构文件属性数据的表结构文件.TAB (2) 属性数据文件属性数据文件.DAT (3) 交叉索引文件交叉索引文件.ID (4) 空间数据文件空间数据文件.MAP (5) 索引文件索引文件.IND Tab文件文件 (1)属性数据的表结构文件)属性数据的表结构文件.TAB 属性数据表结构文件定义了地图属性数据的表结构,包属性数据表结构文件定义了地图属性数据的表结构,包 括字段数、字段名称、字段类型和字段宽度、索引字段及相括字段数、字段名称、字段类型和字段宽度、索引字段及相 应图层的一些关键空间信息描述。应图层的一些关
49、键空间信息描述。.TAB文件实际上是一个文文件实际上是一个文 本文件,可以在写字板中打开观察其内容。本文件,可以在写字板中打开观察其内容。 (2)属性数据文件)属性数据文件.DAT 属性数据文件中存放完整的地图属性数据。在文件头之属性数据文件中存放完整的地图属性数据。在文件头之 后,为表结构描述,其后首尾相接地紧跟着各条具体地属性后,为表结构描述,其后首尾相接地紧跟着各条具体地属性 数据记录。数据记录。 (3)交叉索引文件)交叉索引文件.ID 交叉索引文件记录了地图中每一个空间对象在空间数据交叉索引文件记录了地图中每一个空间对象在空间数据 文件(文件(.MAP)中的位置指针。每四个字节构成一个
50、指针。指)中的位置指针。每四个字节构成一个指针。指 针排列的顺序与属性数据文件(针排列的顺序与属性数据文件(.DAT)中属性数据记录存放)中属性数据记录存放 的顺序一致。交叉索引文件实际上是一个空间对象的定位表。的顺序一致。交叉索引文件实际上是一个空间对象的定位表。 Tab文件文件 (4)空间数据文件)空间数据文件.MAP 具体包含了各地图对象的空间数据。空间数据包括空间对象的具体包含了各地图对象的空间数据。空间数据包括空间对象的 几何类型、坐标信息和颜色信息等。另外还描述了与该空间对几何类型、坐标信息和颜色信息等。另外还描述了与该空间对 象对应的属性数据记录在属性数据文件(象对应的属性数据记