PowerBuilder与MapInfo结合进行地理信息系统(GIS)二次开发 下载本文

内容发布更新时间 : 2024/6/28 18:07:00星期一 下面是文章的全部内容请认真阅读。

龙源期刊网 http://www.qikan.com.cn

PowerBuilder与MapInfo结合进行地理信息系统(GIS)二次开发

作者:郑 涛

来源:《电脑知识与技术》2008年第34期

摘要:主要探讨了在基于MapInfod的二次开发应用系统中,采用OLE自动化以及与客户/服务器开发工具PowerBuilder系统集成开发的基本方法和集成开发中的一些关键技术的实现方法。

关键词:PowerBuilder;MapInfo;MapBasic;OLE自动化

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)34-1564-03

PowerBuilder MapInfo in conjunction with the Geographic Information System (GIS) Secondary Development ZHENG Tao

(The Information and Control Engineering School, Xi’an University of Architecture and Technology, Xi’an 710055, China)

Abstract: Based on MapInfod discussed in the secondary development of application systems, and by using OLE automation and client / server development tools PowerBuilder integrated

development system, the basic method and integrated development in a number of key technology implementation.

Key words: PowerBuilder; MapInfo; MapBasic; OLE Automation 1 引言

MapInfo是由美国MapInfo公司推出的地理信息系统开发平台,其核心包括MapInfo Professional和MapBasic两个部件。MapInfo地理信息系统平台作为一个图形-文字信息完善结合的软件工具,能将所需要的信息资料形象、直观地与地理图形紧密地联结起来,能提供大量常用的分析、查询功能,能将结果以图形或表格的方式显示出来。MapBasic作为与MapInfo

龙源期刊网 http://www.qikan.com.cn

配套的开发工。用户使用MapBasic,可以设计、建立符合自己特点和要求的纯用户化的应用系统。作为一种结构化语言,MapBasic提供了380多种函数和命令语句,既简洁明了、易于学习,又具有强大的功能,可以完成用户的各种需求。与传统的GIS软件相比较,良好的软件集成环境和面向对象及事件驱动的编程思想,都是MapBasic的优点。

PowerBuilder 是一个面向对象的用于构造基于客户/服务器(Client/Server)数据库应用系统的开发工具,它通过ODBC可同时支持Sysbase、Oracle、Informix、SQL Server等多种关系数据库,具有强大的数据库应用程序开发功能,尤其是它提供的如数据窗口(Data Window)等工具,使其能够更加方便有效地访问与操纵数据库。

2 对OLE自动化技术简介

其它应用程序与MapInfo的连接,其它应用程序与MapInfo的连接方式。 1) OLE自动化; 2) 回调(CallBake)]\\; 3) 动态数据交换(DDE); 4) 运行其它应用程序; 5) 调用动态链接库(DLL)。

其中,运行其它应用程序方法比较简单,这里不赘谈,而调用动态链接库(DLL)方法需要比较高的技巧,且比较繁琐,不利于实际应用,主要针对OLE自动化技术进行简单说明。 MapInfo允许其它支持OLE(Object linking and embedding,对象连接嵌入)功能的应用程序把MapInfo作为一个对象加以调用。MapInfo作为OLE服务器向其它应用程序提供它的对象,而客户应用程序则使用它的对象。其它应用程序通过调用OLE自动化对象(如MapInfo)的方法。属性来操作MapInfo。例如,调用DO(string)的方法向MapInfo

发送命令串来对MapInfo进行操作。Do语句把后面的字符串解释为MapBasic语句,使得MapInfo就像在执行MapBasic交互命令窗口中键入的命令一样执行这个命令字符串。 下面是使用Delfi5.0利用自动化OLE技术与MapInfo建立连接的具体步骤: 1) 对象声明

龙源期刊网 http://www.qikan.com.cn

Var olemapinfo:Variant;//MapInfo应用程序对象 2) 初始化对象

Olemapinfo:=CreatOLEobject(‘olemapinfo.Application’);//启动MapInfo应用程序对象 3) 工作方式(以在窗体的panell中打开地图窗口为例)

Olemapifo.Do (‘Set next Document parent’+panell.Handle +’style 1’);//“重复化”下一个文档窗口(如map)

Olemapifo.Do(‘open table “c:\\data\\world”+’map from world’); //打开world地图窗口。

在跨平台集成地图的应用系统中,OLE客户程序必须能够充当自动化OLE的控制器,能够创建接口的诸要素,如窗口、窗体以及控制,同时还必须能够获取窗口的窗口号(HWND)。

3 开发框架

使用PowerBuilder和MapInfo集成开发技术所开发的应用程序,称为集成的地图应用程序(Integrated Mapping Application)。在集成的地图应用程序中,以客户/服务器的开发模式,使用PowerBuilder开发的应用程序称为客户程序。客户程序运行在前台,通过OLE调用在后台运行的作为OLE自动化服务器的Mapinfo。

在集成的地图应用程序中,根据MapInfo提供的Integrated Mapping接口,在PowerBuilder客户程序中使用Outbound OLE Automation(输出OLE自动化)技术,将MapInfo的地图窗口集成到客户程序中,从而使客户程序具备地图处理能力。客户程序使用MapInfo OLE自动化对象、MapBasic OLE自动化对象的有关属性和方法,通过MapInfo OLE自动化服务器对集成的地图窗口进行控制。

4 建立PowerBuilder客户程序和MapInfo OLE服务器的连接