 |
PowerBuilder和MapInfo的集成开发技术 |
★★★ |
PowerBuilder和MapInfo的集成开发技术 |
|
|
powerbuilder 是一个面向对象的用于构造基于客户/服务器(client/server)数据库应用系统的开发工具,它通过odbc可同时支持sysbase、oracle、informix、sql server等多种关系数据库,具有强大的数据库应用程序开发功能,尤其是它提供的如数据窗口(data window)等工具,使其能够更加方便有效地访问与操纵数据库。 mapinfo是由美国mapinfo公司推出的地理信息系统开发平台,其核心包括mapinfo professional和mapbasic两个部件。通过mapinfo平台,能把大量信息直观地与地理图形有机联系起来,使枯燥的表格数据可视化,从而极大地方便了数据分析和辅助决策。 利用powerbuilder强大的数据访问与操纵能力和mapinfo的地图信息管理功能,结合integrated mapping技术、ole自动化技术等,将mapinfo地图集成到powerbuilder的应用中,可以迅速地开发出具有强大地图处理能力的应用程序,使数据库中繁杂抽象的数据快速、准确、灵活地显示于电子地图之上,将数据可视化,实现空间数据和属性数据的有机结合。 1 开发框架 使用powerbuilder和mapinfo集成开发技术所开发的应用程序,称为集成的地图应用程序(integrated mapping application)。在集成的地图应用程序中,以客户/服务器的开发模式,使用powerbuilder开发的应用程序称为客户程序。客户程序运行在前台,通过ole调用在后台运行的作为ole自动化服务器的mapinfo。LOCALHOst 在集成的地图应用程序中,根据mapinfo提供的integrated mapping接口,在powerbuilder客户程序中使用outbound ole automation(输出ole自动化)技术,将mapinfo的地图窗口集成到客户程序中,从而使客户程序具备地图处理能力。客户程序使用mapinfo ole自动化对象、mapbasic ole自动化对象的有关属性和方法,通过mapinfo ole自动化服务器对集成的地图窗口进行控制。图1给出了客户程序和服务器程序间的关系。 图1 powerbuilder客户程序和mapinfo服务器的关系 2.建立powerbuilder客户程序和mapinfo ole服务器的连接 建立powerbuilder客户程序和mapinfo ole服务器的连接在原理上是:在powerbuilder开发的客户程序中,通过使用outbound ole automation技术实现客户程序和mapinfo服务器的连接,借助ole调用mapinfo服务器。具体实现上是:在包含地图窗口的框架窗口的open事件中添加代码,创建一个新的oleobject,而将mapinfo作为这个新的oleobject的ole服务器。要调用mapinfo服务,则需调用connecttonewobject()函数并传递ole programmable object的程序标识,即“mapinfo.application”: //oleobject对象的实例 oleobject mapinfo //接收错误代码 integer errcode //创建一个与mapinfo进行通信的ole自动化对象 mapinfo = create oleobject //连接ole自动化对象到mapinfo服务器 errcode = mapinfo.connecttonewobject(mapinfo.application) if errcode <> 0 then messagebox(fatal error, error connecting to the map server. exiting...) ruturn end if 在退出应用程序时,要调用disconnecttoobject()函数断开ole自动化对象和mapinfo ole自动化服务器之间的连接,并撤消ole自动化对象,以释放其占用的系统资源。为此,可在上述框架窗口的close事件中添加代码实现: //断开与ole自动化对象与mapinfo服务器的连接 mapinfo.disconnecttoobject() //释放ole自动化对象 destroy mapinfo 3.将地图窗口集成到powerbuilder应用程序中 要将mapinfo的地图窗口集成到powerbuilder开发的客户程序中,必须在客户程序中为mapinfo中的应用窗口重新指定父窗口,并指定一个picture控件作为集成的地图窗口的父窗口。可以使用ole自动化对象的do方法实现上述功能: //重新指定mapinfo中的应用窗口的父窗口为应用程序窗口 //其中w_map为一个窗口 mapinfo.application.do (set application window + string(handle(w_map))) //指定一个picture控件棗p_map为地图窗口的父窗口,将地图窗口集成到客户程序中 mapinfo.do (set next document parent + string(handle(p_map)) + style 1).gif (11237 字节) src=/lunwen/uploadfiles/200505/20050517200008607.gif width=681> 图2 回调技术的实现 4.实现回调 在powerbuilder的客户程序中,是通过ole自动化对象对集成的地图窗口进行控制,如图2所示。当客户程序在地图窗口进行有关的操作后(例如使用某个自定义工具在地图窗口上单击某个地图对象时),对应的事件只传递给mapinfo服务器,而不直接传递给客户程序,为了在客户程序中对事件进行处理,必须采用回调技术。由于在powerbuilder中不能定义公共 [1] [2] [3] 下一页
|
|
上一个论文: 网络时代不用交税了?--互联网对税收体系的挑战 下一个论文: 网络办公自动化系统开发分析
|
|
|
看了《PowerBuilder和MapInfo的集成开发技术》的网友还看了:
[免费范文]利用开源框架Struts+Hibernate实现Web应用程序 [免费范文]LabWindows/CVI的应用特点 [免费范文]基于RRAS与虚拟专用网技术在Windows中的实现 [今日更新]巧用PowerPoint制作高中化学多媒体课件 [今日更新]基于语音技术的信息无障碍Web页面实现 [今日更新]基于TOWS矩阵的县域集群经济发展战略研究 [今日更新]Windows8是微软的翻身之战 [今日更新]Windows8 LOGO发布,经典Windows LOGO回顾 [今日更新]Web2.0网站新闻传播的特性比较与趋势 [今日更新]《mary,did you know》__圣诞歌曲
|
|