版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、地理信息系统二次开发,聂芹 聊城大学环境与规划学院 2010.3,GIS开发模式,对从事GIS研究和应用的工程技术人员而言,开发和设计地理信息系统具有两个方面的含义: 一是从底层开发一个通用的地理信息系统,即通用平台的开发; 二是在商业化地理信息系统(主要是通用的地理信息系统开发平台)的基础上进行二次开发,完成专用地理信息系统的开发任务。二次开发又可分单纯二次开发与集成二次开发。,GIS开发模式独立开发,独立开发:不依赖任何GIS工具,从空间数据的采集、编辑到数据的处理分析及结果输出,所有的算法都由开发者独立设计,然后选用某种程序设计语言(如VC+、Delphi等),在一定的操作系统平台上编程
2、实现。 好处:无须依赖任何商业GIS工具软件,减少了开发成本。 劣势:对大多数开发者来说,能力、时间、财力方面的限制使其开发出来的产品很难在功能上与商业化GIS工具软件相比,而且在购买GIS工具软件上省下的钱可能还抵不上开发者在开发过程中所耗的时间和精力。,GIS开发模式单纯二次开发,单纯二次开发:完全借助GIS工具软件提供的开发语言进行应用系统开发。 GIS工具软件大多提供了可供用户进行二次开发的宏语言,如ESRI的ArcView提供了Avenue语言,MapInfo公司开发的MapInfo Professional提供了MapBasic语言等。用户可以利用这些宏语言,以原GIS工具软件为开
3、发平台,开发出自己的针对不同应用对象的应用程序。 这种方式省时省心,但进行二次开发的宏语言作为编程语言只能算是二流,功能极弱,用他们来开发应用程序仍然不尽人意。,GIS开发模式集成二次开发,集成二次开发 利用专业的GIS工具软件(如ArcView,MapInfo等)实现GIS的基本功能,以通用软件开发工具尤其是可视化开发工具(如Delphi、VC+等)为开发平台,进行二者的集成开发。 目前,集成开发主要有两种方式: (1)OLE/DDE 采用OLE Automation(Object Linking Embedding,对象连接与嵌入)技术或DDE(Dynamic Data Exchange,
4、动态数据交换)技术,用软件开发工具开发前台可执行应用程序,以OLE自动化方式或DDE方式启动GIS工具软件在后台执行,利用回调技术动态获取其返回信息,实现应用程序中的地理信息处理功能。,GIS开发模式集成二次开发,(2)GIS控件 利用GIS工具软件生产厂家提供的建立在OCX(OLE Custom Controls,OLE自定义控件)技术基础上的GIS功能控件,如ESRI的MapObjects、MapInfo公司的MapX、北京超图地理信息技术有限公司的SuperMap等,在VC+、C+Builder、Delphi、VB等编程语言编写的应用程序中,直接将GIS功能嵌入其中,实现地理信息系统的各
5、种功能。,GIS开发模式,三种开发模式的比较 独立开发难度太大;单纯二次开发受GIS工具提供的编程语言的限制差强人意; 集成二次开发方式成为GIS应用开发的主流。 优势:既可以充分利用GIS工具软件完备的空间数据库管理、分析功能,又可以利用其他面向对象可视化开发语言具有的高效、方便等编程特点,集二者之所长,不仅大大提高应用系统的开发效率,而且使用可视化软件开发工具开发出来的应用程序具有更好的外观效果,更强大的数据库功能,可靠性好,易于移植,便于维护,尤其是利用组件进行集成开发,更能表现这些优势。,课程教学内容,第一部分 基于MapBasic的开发 第二部分 基于OLE自动化的开发 VBOLEM
6、apInfo程序的编写 第三部分 利用MapX控件的开发,第一部分 基于MapBasic的开发,MapBasic概述 MapBasic程序设计基础 函数与过程 创建用户界面 MaPInfo表管理及信息获取 文件的输入与输出 Maplnfo地图对象的管理,MapBasic是Mapinfo自带的二次开发语言,它是一种类似Basic的结构化程序设计语言,使用与Basic语言一致的函数和语句,便于用户掌握。早期的Mapinfo二次开发都是基于MapBasic进行的。 MapBasic功能强大,可以扩展MapInfo的功能,实现程序的自动重复操作,并且能使MapInfo与其他应用软件集成。,第1章 Ma
7、pBasic概述,1.1 MapBasic的主要特点: (1)MapBasic是一种类Basic语言,可以帮助建立用户界面。 通过MapBasic,用户可以开发个性化的MapInfo界面,可以修改或取代标准的MapInfo菜单。由于桌面GIS应用软件在各种机构和领域内的应用越来越广泛,用户对开发应用软件的需求日益增大,用户可以利用MapBasic开发适合自己需求的应用软件包。,第1章 MapBasic概述,(2)MapBasic支持OLE和DDE技术,能够实 MapInfo与其他应用程序的链接。能够在VB、VC、Delphi等开发工具中集成地图窗口。 (3)MapBasic能扩展MapInfo
8、功能。 MapBasic是一种多平台、过程化、事件驱动的、兼容性很强的MapInfo开发工具,其语言结构允许用户定制附加功能。它具有功能很强的内含地理特性的语句和函数。 (4)MapBasic具有强大的数据库访问工具。 使用一条MapBasic语句就可以执行复杂而先进的数据 库查询。 (5)具有较好的兼容性。 MapBasic与所有支持MapInfo的平台相兼容, MapBasic应用程序可以在这些平台上运行。,1.1 MapBasic的主要特点:,有了MapBasic开发环境的支持,可以将MapInfo引入各种应用领域,可以充分展开想像力去开发多姿多彩的地理信息系统。,1.1 MapBasi
9、c的主要特点:,1.2 MapBasic开发环境 安装MapBasic前,必须先安装MapInfo。 MapBasic提供了应用程序的开发环境,主要包括: (1)文本编辑器(Editor) 用于生成和编辑MapBasic程序的文本编辑窗口。 (2)程序编译器(Compiler) 用于将完成的程序编译成可执行程序。 (3)程序链接器(Linker) 用于将程序的多个模块链接成一个应用程序。 (4)联机帮助(Help) 为用户提供有关MapBasic语言及其开发的帮助文档。,1.3 MapBasic开发过程 (1)编辑源程序(.mb) 运用MapBasic的代码编辑窗口,可以方便的编写MapBas
10、ic语言的程序代码。由于MapBasic是用标准的文本格式来保存程序文件的,所有用户也可以使用其他的文本编辑软件来编辑MapBasic代码,但必须是以纯文本格式来保存文件。 (2)编译源程序(.mbx) MapBasic首先检查程序的语法,如果有语法错误, MapBasic会先显示一个对话框窗口,然后在编辑窗口底部显示错误的详细表列,每个错误信息均由行号开始,它指明了错误是在第几行。同时MapBasic会把错误信息写到一个扩展名为.err的文本文件中。 如果用户编译程序时使用的是其他文本编辑软件,则可以使用file菜单下的compile from file.命令来编译程序。使用该方法不需要在编
11、辑窗口显示程序。 MapBasic并不能检查到所有错误,有些类型的拼音错误是检测不到的。这并不是MapBasic编译器的缺陷,因为一些变量和表只有到程序运行时才被计算。 (3)运行MapBasic程序 注意:所有的MapBasic程序不是独立的程序,它只能在MapInfo运行后运行。 例,1.3 MapBasic开发过程 MapBasic的代码编辑窗口所能编辑的文件大小是有限制的。当用户的应用程序比较大时,可以采用如下方法: (1)使用其他文本编辑器来编辑MapBasic程序文件,再使用file菜单下的compile from file.命令来编译程序。 (2)把一个较大的MapBasic应用
12、程序文件分成几个较小的文件,然后使用MapBasic的include语句把这些文件组合成一个应用程序。 (3)把一个较大的MapBasic应用程序文件分成几个较小的文件,然后使用一个项目文件(project)把这些文件组合成一个应用程序。 后两种方法的区别在于,第3种方法可以独立编译每个模块,因此如果只修改其中一个模块,只需对该模块进行重新编译即可。,1.4 创建多个模块的项目文件 一个比较复杂的程序可能包含上万行代码,如果把他们写在一个文件里,则很难找到特定的部分,难以管理、排错。 可以把一个大的应用程序分成多个小的文件,每个文件实现特定的功能,然后建立一个工程文件来把这些独立的模块链接成一
13、个可执行文件。 例:建立项目文件过程(examplemuiti_modules),1.4 创建多个模块的项目文件 建立项目文件过程: (1)选择file菜单的new命令,打开一个新的编辑窗口 (2)在代码窗口中输入关键词LINK作为一行 LINK (3)在接下来一行输入下面格式的语句 Application=setting setting指的是用户要建立的可执行文件的文件名(*.mbx)和路径。如:application=f:1second.mbx (4)下一行输入如下格式的语句: module=setting setting代表MapBasic的目标文件名,其扩展名为.mbo,当项目文件的单
14、个模块被编译时, MapBasic会自动为其创建一个目标文件。如:setting=part1.mbo,1.4 创建多个模块的项目文件 任何时候,当选择project菜单中的compile current file时, MapBasic就会试图把当前文件编译成可执行文件(*.mbx)。但如果该程序调用了不在该文件的函数或过程,或该程序没有主过程(main过程)时, MapBasic假设它是一个大项目中的一部分,因此把它编译成一个目标文件(*.mbo)。 例:jiecheng.mb;main.mb (5)重复上一步骤,加入项目文件所需要的所有模块。最后加入如下auto_lib模块: module=c:program filesmapinfomapbasicsamples mapbasiclibauto_lib.mbo auto_lib模块模块是MapBasic自带的实例,要想编译和链接项目文件,必须先得到auto_lib.mbo文件。默认时该文件不存在,必须手动将auto_lib.mb文件编译成auto_lib.mbo (6)保存项目文件,注意选择文件类型为mbp。最后关闭文件。 这样创建好了一个项目文件。以后要在项目文件中加入更多模块,只需在该文件中加入相应行(module=)即可。,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026及未来5年中国台式真空充气包装机数据监测研究报告
- 2026事业单位工勤技能-江苏-江苏造林管护工二级(技师)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-江苏-江苏检验员三级(高级工)历年参考题库含答案详解3套试卷
- 人工智能治理实践感悟
- 2026事业单位工勤技能-新疆-新疆广播电视天线工一级(高级技师)历年参考题库含答案详解3套试卷
- 安全禁止标识大全讲解
- 2026三项岗位人员(应急管理局)-其他-有限空间作业安全题库历年参考题库含答案详解3套试卷
- 职业发展规划书模板大全
- 2026年秋季开学高三证书备考学习方法指导课件
- 2026年秋季开学大学一年级新生军训作息管理总结课件
- 2026浙江宁波市镇海区骆驼街道工作人员、行政村后备干部及农村社工招聘10人备考题库带答案详解(培优a卷)
- 客户回访记录与数据分析报告
- 房地产经纪业务记录制度
- 2026年技能人才评价外部质量督导员考试试卷及答案
- 北京市拆迁档案管理制度
- 风湿免疫科疾病护理
- GB/T 3884.1-2025铜精矿化学分析方法第1部分:铜含量的测定碘量法和电解法
- (16)普通高中体育与健康课程标准日常修订版(2017年版2025年修订)
- 夹芯板防爆墙施工方案设计
- 《计算机制图-AutoCAD2020》课件(共六个模块)
- 液氨安全管理培训课件
评论
0/150
提交评论