范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

PowerBuilder和MapInfo的集成开发技术

  PowerBuilder和MapInfo的集成开发技术          PowerBuilder和MapInfo的集成开发技术			     PowerBuilder和MapInfo的集成开发技术PowerBuilder和MapInfo的集成开发技术 中国人民解放军电子工程学院  梁亚声
  摘要: 本文介绍了客户/服务器开发工具PowerBuilder和桌面地图信息系统MapInfo集成开发的基本方法。重点讨论了集成开发中的一些关键技术的实现方法。
  关键词:PowerBuilder,MapInfo,MapBasic,系统集成,OLE自动化,回调
  0 引言
  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。
  在集成的地图应用程序中,根据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")
  图2 回调技术的实现
  4.实现回调
  在PowerBuilder的客户程序中,是通过OLE自动化对象对集成的地图窗口进行控制,如图2所示。当客户程序在地图窗口进行有关的操作后(例如使用某个自定义工具在地图窗口上单击某个地图对象时),对应的事件只传递给MapInfo服务器,而不直接传递给客户程序,为了在客户程序中对事件进行处理,必须采用回调技术。由于在PowerBuilder中不能定义公共的回调类,因此必须编写一个在MapInfo服务器中运行的MapBasic应用程序,用来将回调信息反馈给PowerBuilder客户程序。其实现过程为:
  然后,编写一个在MapInfo服务器中运行的MapBasic应用程序,在此应用程序中添加对地图窗口事件进行处理的子程序。当对客户程序中的集成地图窗口进行操作时,MapBasic程序中对应的事件处理程序被触发。在事件处理程序中,可以将要传递给客户程序的信息保存到MapBasic中定义的一个全局变量中,然后使用Win32 API函数PostMessage(),以PowerBuilder应用窗口的句柄和该窗口的用户自定义事件的ID为参数,向PowerBuilder客户程序发送消息,这样PowerBuilder客户程序就可以在该窗口的用户自定义事件中处理地图窗口事件了,并且还可以使用MBApplications对象的方法,获取MapBasic全局变量中保存的事件信息。如下代码展示了MapBasic应用程序在接收到地图对象选择事件时的处理的过程:
  " 预定义PowerBuilder应用窗口的用户自定义事件的唯一数值标识符
  "响应地图对象选择事件
  Sub SelChangedHandler()
  "如果选中一个地图对象
  If CommandInfo(CMD_INFO_SELTYPE) = 1 Then
  "保存地图对象所在的表的名称
  g_seltabname = SelectionInfo(SEL_INFO_TABLENAME)
  "向PowerBuilder客户程序发送消息
  iRc = PostMessage(g_pbhwnd_bg,SELECTION_MADE,0,0)
  End If
  End Sub
  下面的程序段中给出了实现回调时PowerBuilder客户程序的处理过程。该处理过程使用了MapBasic编写的mbserver.mbx程序。在MapBasic程序中保存事件信息的变量为g_SelTabName,而g_PbHWnd是MapBasic程序中用来接收PowerBuilder客户程序窗口句柄的全局变量。
  //在MapInfo服务器中运行MapBasic应用程序
  MapInfo.Do("Run Application ~"" + gs_AppDir + "DataFusion.mbx~"")
  //创建对MapBasic应用程序进行控制的OLE自动化对象
  MBAppOleObject = Create OleObject
  MBAppOleObject = MapInfo.MBApplications.Item
  (1)
  //传递PowerBuilder客户程序中的窗口句柄给MapBasic应用程序
  //以便MapBasic应用程序将返回给PowerBuilder客户程序
  MBAppOleObject.MBGlobals.Item("g_pbhwnd_bg").Value = String(Handle(this))
  由下面代码所示的PowerBuilder客户程序就可以在窗口w_map的用户自定义事件ue_SelectionMade中处理地图窗口事件:
  //在PowerBuilder客户程序的用户自定义事件中使用MBAppOleObject对象获取回调信息
  ls_MI_CommandInfo = MBAppOleObject.MBGlobals.Item("g_CommandInfoString").Value
  5.充分利用MapBasic应用程序
  MapBasic是MapInfo提供的用户系统开发工具,它具有对地图对象的管理、对含有地图对象的MapInfo表的管理等方面的强大功能。
  在将MapInfo地图集成到PowerBuilder的开发应用中,MapBasic不仅仅能用来实现回调,还可实现其它诸多功能。例如,在开发过程中经常会遇到需要保存地图对象类型的中间结果的问题,而在PowerBuilder中没有与之对应的数据类型,又难以通过MapInfo OLE自动化对象的方法和属性实现等诸如此类的问题,若利用MapBasic应用程序以及使用它的OLE自动化对象MBApplications的方法和属性来解决,可以达到事半功倍之效果。
  与MapInfo OLE自动化对象相似,MapBasic的OLE自动化对象MBApplications也有自己的Do方法和Eval方法。每当PowerBuilder客户程序调用它们时,MapInfo就会自动调用MapBasic的保留过程RemoteMsgHandler()或RemoteQueryHandler()过程,并可以在过程中通过CommandInfo(CMD_INFO_MSG)得到调用Do方法或Eval方法的参数。
  以下代码运用MBApplications的Do方法,实现改变当前选中地图对象的颜色:
  //要求将当前选中地图对象的颜色改为兰色
  MBAppOleObject.Do("Blue")
  MapInfo将自动调用RemoteMsgHandler()过程:
  Sub RemoteMsgHandler()
  Dim MyObject As Object
  "获取并分析Do方法的参数
  CmdInfoStr = CommandInfo(CMD_INFO_MSG)
  "改变地图对象的颜色
  If CmdStr= "Blue" then
  MyObject = Selection.obj
  Update Selection set obj = MyObject Where RowID = 1
  End If
  End Sub
  MBApplications的Eval方法的调用与Do方法的类似,只不过MapInfo将自动调用RemoteQueryHandler()过程,并要求返回一个结果。
  6 结束语
  目前,关于MapInfo地图的集成应用大都是利用VB、VC++开发的,利用PowerBuilder开发的实际应用却很少,以至很多人认为难以利用PowerBuilder实现对MapInfo的集成开发,就算实现了也难以很好地完成对地图窗口的控制。本文介绍了如何将MapInfo地图集成到PowerBuilder的开发应用中的基本方法,以及其中的一些关键技术。运用此方法开发应用程序,可以充分发挥PowerBuilder强大的数据访问与操纵能力和MapInfo的地图信息管理功能,迅速地、灵活地开发基于地理信息系统的客户/服务器的信息管理系统。
  参考文献:
  1.William B.Heys著,王艺,徐利平,范维等译PowerBuilder 6 开发指南,1998
  2.张剑平,任福继,叶荣华,骆红波著,地理信息系统与MapInfo应用,科学出版社,1999
  3.宜晨等著,MapInfo 4.0 实用培训教程,电子工业出版社,1998

论声乐演唱中的情感表达毕业论文摘要歌唱艺术离不开情感表达。不同的歌曲表达不同的情感,在演唱中,我们把词曲者以及歌唱者内心蕴涵的感情,通过歌声表达出来,是我们潜心追求的,所以我们在演唱中不能停留或纠缠在声少儿舞蹈启蒙教学之我见毕业论文摘要少儿舞蹈教育,对学生的身心教育体质技能以及智能的提高和发展都起着重要作用。学生是教学的主体,在舞蹈教学中充分发挥主体作用,让学生自己起舞,尽情的展现自己,这样才能使学生从创作角度谈中国民间舞蹈的发展走向毕业论文摘要中国是个文化大国,民族众多,每个民族地区都积存着丰富多彩的文化遗产。民间舞蹈文化如宝石般璀璨。在世界舞蹈文化不断融合,不断发展的时代,我们要在保持我国民间舞蹈文化原汁原高师音乐教育应加强对学生师范性的培养毕业论文摘要高师音乐教育专业是培养基础音乐教育师资的摇篮。伴随着2001年7月全日制义务教育音乐课程标准(实验稿)的颁布与实施,基础音乐教育的改革不断的深入,这种新局面对高师音乐教在玩中学习音乐谈学生音乐兴趣的培养毕业论文摘要我国普通学校音乐教育,特别是中小学音乐教育在发展的同时也存在着1些问题。构成这1问题的原因有很多,其主要原因与老师的教是分不开的。因此如何在提高学生学习音乐兴趣的前提下论想象在声乐表演中的重要性毕业论文摘要想象在声乐表演中的重要性,国内外许多声乐研究学者早就注意到了且1直都在研究。在声乐表演中,想象是作为1种心理要素贯穿其中的。在电影广告绘画等艺术领域都离不开想象,可以说解析宋代民俗文化的审美特质不同层次和类型文化之间的差异,表面的区别与内涵的相异都根源于各自具有的文化特质,借助对文化特质的分析,可以进行不同文化之间的异同比较,也可以由此管窥某一文化内部细微的文化机理和复杂论河南风格的古筝艺术毕业论文摘要古筝艺术,是中国民族音乐百花园中闪烁着光芒的奇葩,是华夏文明不可或缺的重要组成部分。河南筝乐流派作为中国古筝流派的第1大派,它的存在与发展浓缩地反映了近3千年以来,古筝热爱母语声乐文化完善民族声乐体系热爱母语声乐文化完善民族声乐体系摘要高校声乐教育肩负着培养声乐人才的重担。声乐教育通过民族声乐文化的传播,对增强学生的民族自豪感,建立中国自己的声乐体系,构筑一道民族精神文化家园的文化设施建设设计中应关注的问题浅探文化设施建设设计中应关注的问题浅探摘要文化场馆建筑是一切对应文化活动的多维平台,一个合适的多维平台是文化工作和活动的根本保障。就博物馆而言尤显如此!称得上规范科学的博物馆建筑并不多高中数学教育中数学文化教育探究论文摘要数学教育并不仅仅是一种知识传授,数学中蕴含着深厚的数学文化。数学有着数千年的发展历史,人类在刀耕火种的年代就开始使用结绳计数,而数学思维和数学方法贯穿着人类文明发展的始终,数学
新课程资源开发利用的研究论文教师是综合社会实践课程资源的利用者和实质上的开发者,学生是课程资源开发的主体和学习主人。抓住生活的点点滴滴,眼里有资源,心里有教育,课程资源就无处不在。随着课程改革的深入发展,为了校园英语文化建设对提高大学生人文素质的研究论文随着国家改革开放的不断深入,越来越多的企业和部门急需英语交际能力强的高素质人才。研究发现,高校校园英语文化活动成了提升大学生英语交际能力的有效途径。本文运用统计学方法阐述了校园英语体验式阅读教学初中语文论文一构建初中语文教学体验式阅读模式的策略创设文本情境,唤醒内心体验通过选择适宜的背景音乐,体验式阅读教学既能够引起学生积极参与的兴趣,又能够陶冶学生的情操,激发学生的想象力。例如,阅小学体育游戏的尝试与设计论文随着新课改的深入,旧式教育的模式在新课堂上越来越不适用,一味强调文化课程,严重忽略艺体类学科,不仅不利于学生完整人格的培养,还会影响其综合素质的提升。因此,在小学教育阶段,我们要倡普通高校体育的教学论文1民办普通高校体育教学质量评估体系研究1。1民办普通高校开展体育教学质量评估体系的必要性民办普通高校体育教学质量评估体系的实施是必要的,可以促进体育教学质量提高可以促进学生学习质量高校体育教学中体育文化的传承论文在我国当前的学校体育教学过程中,已逐渐形成了重科学,轻人文的不良态势,究其原因,多半是我们的教育理念出现了偏差,过于重视运动项目的形式价值,进而忽略了其本身所具有的人文价值,国内高中学教育管理模式的探讨论文摘要本文从师资队伍建设教育管理机制教育手段校园文化环境影响等方面探讨了系统的中学教育管理模式。关键词高中教育管理模式管理机制学校管理是学校生存和发展的命脉,也是中学教育的中心工作。园林景观设计中的民族文化初探论文摘要民族文化承载着一个国家特定历史时期内的人文因素和历史因素,并经过时间的洗礼成为一个民族的代表特征。园林景观作为古老文化的表现形式之一,在设计中也对这种民族文化进行挖掘和借鉴,并孝文化传承的居住区景观设计论文摘要将孝文化中的文化元素以景观符号的形式体现出来,使建筑在审美功能的基础上增添教育功能。基于此,文章就孝文化传承的居住区景观设计进行探析,首先简要分析中华孝文化传承的意义,然后具体小学美术教育教学论文小学美术教育专业的培养对象是未来的小学美术教师。就目前的小学美术教育专业教学来看,大多数美术教师在教学中完全采用高校美术专业教学模式,这种教学模式偏离了师范性,忽视了学生教育教学能循环经济发展制度创新研究的论文内容摘要可持续发展是西部进行现代化建设的必然选择,而发展循环经济是实现可持续发展的重要途径。本文分析了西部发展循环经济的制度障碍,并提出了解决制度障碍的路径选择。关键词西部循环经济