第1章 地理信息系统二次开发
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.3 MapBasic开发过程 MapBasic的代码编辑窗口所能编辑的文件大小是有限制的。 当用户的应用程序比较大时,可以采用如下方法: (1)使用其他文本编辑器来编辑MapBasic程序文件,再使用file 菜单下的compile from file..命令来编译程序。 (2)把一个较大的MapBasic应用程序文件分成几个较小的文件, 然后使用MapBasic的include语句把这些文件组合成一个应用 程序。 (3)把一个较大的MapBasic应用程序文件分成几个较小的文件, 然后使用一个项目文件(project)把这些文件组合成一个应 用程序。 后两种方法的区别在于,第3种方法可以独立编译每个模块, 因此如果只修改其中一个模块,只需对该模块进行重新编译 即可。
地理信息系统二次开发
聂芹 聊城大学环境与规划学院 2010.3
GIS开发模式 开发模式
对从事GIS研究和应用的工程技术人员而言,开 发和设计地理信息系统具有两个方面的含义: 一是从底层开发一个通用的地理信息系统,即通 用平台的开发; 二是在商业化地理信息系统(主要是通用的地理 信息系统开发平台)的基础上进行二次开发,完 成专用地理信息系统的开发任务。二次开发又可 分单纯二次开发与集成二次开发。
GIS开发模式-独立开发 开发模式- 开发模式
独立开发:不依赖任何GIS工具,从空间数据的采集、 编辑到数据的处理分析及结果输出,所有的算法都 由开发者独立设计,然后选用某种程序设计语言 (如VC++、Delphi等),在一定的操作系统平台上 编程实现。 好处:无须依赖任何商业GIS工具软件,减少了开发 成本。 劣势:对大多数开发者来说,能力、时间、财力方 面的限制使其开发出来的产品很难在功能上与商业 化GIS工具软件相比,而且在购买GIS工具软件上省 下的钱可能还抵不上开发者在开发过程中所耗的时 间和精力。
课程教学内容
第一部分 基于MapBasic的开发 第二部分 基于OLE自动化的开发
VB+OLE+MapInfo程序的编写
第三部分 利用MapX控件的开发
第一部分 基于MapBasic的开发
MapBasic概述 MapBasic程序设计基础 函数与过程 创建用户界面 MaPInfo表管理及信息获取 文件的输入与输出 Maplnfo地图对象的管理
GIS开发模式-集成二次开发 开发模式
集成二次开发 利用专业的GIS工具软件(如ArcView,MapInfo等)实现GIS的基 本功能,以通用软件开发工具尤其是可视化开发工具(如Delphi、 VC++等)为开发平台,进行二者的集成开发。 目前,集成开发主要有两种方式: (1)OLE/DDE 采用OLE Automation(Object Linking Embedding,对象连接与嵌 入)技术或DDE(Dynamic Data Exchange,动态数据交换)技 术,用软件开发工具开发前台可执行应用程序,以OLE自动化 方式或DDE方式启动GIS工具软件在后台执行,利用回调技术 动态获取其返回信息,实现应用程序中的地理信息处理功能。
1.1 MapBasic的主要特点: 支持OLE和DDE技术,能够实 技术, (2)MapBasic支持 ) 支持 和 技术 MapInfo与其他应用程序的链接。能够在 、VC、 与其他应用程序的链接。 与其他应用程序的链接 能够在VB、 、 Delphi等开发工具中集成地图窗口。 等开发工具中集成地图窗口。 等开发工具中集成地图窗口 能扩展MapInfo功能。 功能。 (3)MapBasic能扩展 ) 能扩展 功能 MapBasic是一种多平台、过程化、事件驱动的、兼容 是一种多平台、 是一种多平台 过程化、事件驱动的、 性很强的MapInfo开发工具,其语言结构允许用户定 开发工具, 性很强的 开发工具 制附加功能。 制附加功能。它具有功能很强的内含地理特性的语句 和函数。 和函数。 具有强大的数据库访问工具。 (4)MapBasic具有强大的数据库访问工具。 ) 具有强大的数据库访问工具 使用一条MapBasic语句就可以执行复杂而先进的数据 使用一条 语句就可以执行复杂而先进的数据 库查询。 库查询。 (5)具有较好的兼容性。 )具有较好的兼容性。 MapBasic与所有支持 与所有支持MapInfo的平台相兼容, 的平台相兼容, 与所有支持 的平台相兼容 MapBasic应用程序可以在这些平台上运行。 应用程序可以在这些平台上运行。 应用程序可以在这些平台上运行
GIS开发模式-集成二次开发 开发模式
(2)GIS控件 利用GIS工具软件生产厂家提供的建立在OCX(OLE Custom Controls,OLE自定义控件)技术基础上的GIS 功能控件,如ESRI的MapObjects、MapInfo公司的 MapX、北京超图地理信息技术有限公司的SuperMap 等,在VC++、C++Builder、Delphi、VB等编程语言 编写的应用程序中,直接将GIS功能嵌入其中,实现 地理信息系统的各种功能。
第1章 MapBasic概述
1.1 MapBasic的主要特点: (1)MapBasic是一种类Basic语言,可以帮助建立 MapBasic是一种类Basic语言, 是一种类Basic语言 用户界面。 用户界面。 通过MapBasic,用户可以开发个性化的MapInfo界 通过MapBasic,用户可以开发个性化的MapInfo界 MapBasic MapInfo 可以修改或取代标准的MapInfo菜单。 MapInfo菜单 面,可以修改或取代标准的MapInfo菜单。由于桌 GIS应用软件在各种机构和领域内的应用越来越 面GIS应用软件在各种机构和领域内的应用越来越 广泛,用户对开发应用软件的需求日益增大,用户 广泛,用户对开发应用软件的需求日益增大, 可以利用MapBasic MapBasic开发适合自己需求的应用软件 可以利用MapBasic开发适合自己需求的应用软件 包。
第1章 MapBasic概述
MapBasic是Mapinfo自带的二次开发语言, 它是一种类似Basic的结构化程序设计语言, 使用与Basic语言一致的函数和语句,便于用 户掌握。早期的Mapinfo二次开发都是基于 MapBasic进行的。 MapBasic功能强大,可以扩展MapInfo的功 能,实现程序的自动重复操作,并且能使 MapInfo与其他应用软件集成。
1.4 创建多个模块的项目文件 建立项目文件过程: (1)选择file菜单的new命令,打开一个新的编辑窗口 (2)在代码窗口中输入关键词[LINK]作为一行 [LINK] (3)在接下来一行输入下面格式的语句 Application=setting setting指的是用户要建立的可执行文件的文件名(*.mbx) 和路径。如:application=f:\1\second.mbx (4)下一行输入如下格式的语句: module=setting setting代表MapBasic的目标文件名,其扩展名为.mbo,当 项目文件的单个模块被编译时, MapBasic会自动为其创 建一个目标文件。如:setting=part1.mbo
1.3 MapBasic开发过程
(1)编辑源程序 )编辑源程序(.mb) 运用MapBasic的代码编辑窗口,可以方便的编写 的代码编辑窗口, 运用 的代码编辑窗口 可以方便的编写MapBasic语言 语言 的程序代码。由于MapBasic是用标准的文本格式来保存程序文 的程序代码。由于 是用标准的文本格式来保存程序文 件的, 件的,所有用户也可以使用其他的文本编辑软件来编辑 MapBasic代码,但必须是以纯文本格式来保存文件。 代码, 代码 但必须是以纯文本格式来保存文件。 (2)编译源程序(.mbx) )编译源程序( ) MapBasic首先检查程序的语法,如果有语法错误, MapBasic 首先检查程序的语法, 首先检查程序的语法 如果有语法错误, 会先显示一个对话框窗口, 会先显示一个对话框窗口,然后在编辑窗口底部显示错误的详细 表列,每个错误信息均由行号开始,它指明了错误是在第几行。 表列,每个错误信息均由行号开始,它指明了错误是在第几行。 同时MapBasic会把错误信息写到一个扩展名为 会把错误信息写到一个扩展名为.err的文本文件 同时 会把错误信息写到一个扩展名为 的文本文件 中。 如果用户编译程序时使用的是其他文本编辑软件, 如果用户编译程序时使用的是其他文本编辑软件,则可以使用 file菜单下的 菜单下的compile from file..命令来编译程序。使用该方法不 命令来编译程序。 菜单下的 命令来编译程序 需要在编辑窗口显示程序。 需要在编辑窗口显示程序。 MapBasic并不能检查到所有错误,有些类型的拼音错误是检测 并不能检查到所有错误, 并不能检查到所有错误 不到的。这并不是MapBasic编译器的缺陷,因为一些变量和表 编译器的缺陷, 不到的。这并不是 编译器的缺陷 只有到程序运行时才被计算。 只有到程序运行时才被计算。 (3)运行 )运行MapBasic程序 程序 注意:所有的MapBasic程序不是独立的程序,它只能在MapInfo 运行后运行。 例
GIS开发模式-单纯二次开发 开发模式
单纯二次开发:完全借助GIS工具软件提供的开发语言进 行应用系统开发。 GIS工具软件大多提供了可供用户进行二次开发的宏语言, 如ESRI的ArcView提供了Avenue语言,MapInfo公司开发 的MapInfo Professional提供了MapBasic语言等。用户可以 利用这些宏语言,以原GIS工具软件为开发平台,开发出 自己的针对不同应用对象的应用程序。 这种方式省时省心,但进行二次开发的宏语言作为编程语 言只能算是二流,功能极弱,用他们来开发应用程序仍然 不尽人意。
1.4 创建多个模块的项目文件
一个比较复杂的程序可能包含上万行代码, 一个比较复杂的程序可能包含上万行代码,如 果把他们写在一个文件里, 果把他们写在一个文件里,则很难找到特定的 部分,难以管理、排错。 部分,难以管理、排错。 可以把一个大的应用程序分成多个小的文件, 可以把一个大的应用程序分成多个小的文件, 每个文件实现特定的功能, 每个文件实现特定的功能,然后建立一个工程 文件来把这些独立的模块链接成一个可执行文 件。 例:建立项目文件过程 (example\muiti_modules)
GIS开发模式 开发模式
三种开发模式的比较 独立开发难度太大;单纯二次开发受GIS工具提供的 编程语言的限制差强人意; 集成二次开发方式成为GIS应用开发的主流。 优势:既可以充分利用GIS工具软件完备的空间数据 库管理、分析功能,又可以利用其他面向对象可视 化开发语言具有的高效、方便等编程特点,集二者 之所长,不仅大大提高应用系统的开发效率,而且 使用可视化软件开发工具开发出来的应用程序具有 更好的外观效果,更强大的数据库功能,可靠性好, 易于移植,便于维护,尤其是利用组件进行集成开 发,更能表现这些优势。
1.பைடு நூலகம் MapBasic的主要特点:
有了MapBasic开发环境的支持,可以将 MapInfo引入各种应用领域,可以充分展开想 想 像力去开发多姿多彩的地理信息系统。 像力
1.2 MapBasic开发环境 安装MapBasic前,必须先安装MapInfo。 MapBasic提供了应用程序的开发环境,主要包括: (1)文本编辑器(Editor) 用于生成和编辑MapBasic程序的文本编辑窗口。 程序的文本编辑窗口。 用于生成和编辑 程序的文本编辑窗口 (2)程序编译器(Compiler) 用于将完成的程序编译成可执行程序。 用于将完成的程序编译成可执行程序。 (3)程序链接器(Linker) 用于将程序的多个模块链接成一个应用程序。 用于将程序的多个模块链接成一个应用程序。 (4)联机帮助(Help) 为用户提供有关MapBasic语言及其开发的帮助文档。 语言及其开发的帮助文档。 为用户提供有关 语言及其开发的帮助文档