1 引言

如今越来越多的人拥有汽车等交通工具,这给交通管理带来新的挑战。为了保证交通的畅通,必须随时了解交通线路的状况、尽快解决交通阻塞问题,但传统的管理由于软硬件的原因不能实现对交通线路的实时监控。

本文提出了在VB环境下,利用美国MapInfo 公司的桌面地理信息系统MapInfo ,把GIS(即地理信息系统)的概念引入交通指挥管理中,实现各种同交通管理相关的信息集成,最终表现为一张数字化地图,以此实现对交通线路的实时监控。

2 MapInfo

2.1 MapInfo的优点

MapInfo是美国MapInfo 软件公司开发的一个面地理信息系统,它具有GIS系统一般功能,诸如地图数据表示、地图编辑、地图分析和地图输出等。

MapInfo的优点有:

(1)丰富的图形元素、编辑工具及图层技术。

(2) 具有OLE自动方式,可实现与VB的无缝集成。

(3)提供了MapBasic这个二次开发工具。

(4) 提供了强大的数据库管理功能,实现在地图上管理数据库。

因此利用MapInfo处理交通线路,可方便地添加所需的信息(诸如报警亭编号、历史记录等),实现相关数据的集成,将数据的空间关系充分体现出来,便于路况的监控。

2.2 二次开发语言MapBasic

MapBasic是在MapInfo平台上开发用户定制的应用程序的理想编程语言。通过使用MapBasic进行二次开发,可扩展MapInfo的功能,诸如定制用户界面 、添加菜单条和选项、添加新的功能和函数、实现程序的自动重复操作并使MapInfo与其它应用软件(特别是由VB开发的,因为MapBasic本身是一种强健的类Basic语言)集成。因此在实际开发中较多地用MapBasic编写模块。

3 VB与MapInfo的集成

3.1客户/服务器方式

客户/服务器方式指客户机运行用户服务请求程序,并将这些请求传送给服务器,服务器管理数据资源,响应处理客户机发出的请求,并将结果传送给客户机。服务器被程序化,可接受并响应同时来自被连接客户机的多个请求。这些请求可能排队,按次序等待服务;或者同时处理几个客户机的请求。客户机向服务器发送请求之后,客户端程序将独立工作,直到它需要来自服务器端的支持为止。

VB与MapInfo都支持OLE Automation方式。OLE Automation方式,实际是一种编程接口,通过它应用程序可以访问在另一个应用程序中实现的对象,提供编程对象给其他应用程序的称“服务器”,访问这些对象的应用程序称“客户机”。这里利用OLE Automation方式,在VB应用程序中将MapInfo作为一个对象来使用,编程调用MapInfo对象,实现对交通线路信息的集成。

3.2 VB与MapInfo的接口

在VB应用程序里实现对另一个应用程序(MapInfo)的访问,利用前面所提到的OLE Automation技术,把MapInfo作为服务器,VB应用程序作为客户机,可以无缝地实现集成MapInfo对象于VB应用程序中。

具体实现步骤如下:

(1)首先定义两个对象:MapInfo与theResponde,即在程序里添加两行:

Public MapInfo As Object '*创立指向MapInfo的对象

Public theResponder As Object '*创立本地对象,MapInfo将把信息返回给它

(2) 然后再添加一个子程序InitializeMapInfoConnection(),用于实现同MapInfo的通信。该子程序在后台创立一个用于通信的MapInfo实例;一个本地在此VB应用程序的类MIResponder的对象的实例,即用于接受MapInfo返回应用程序信息的实例。

具体程序如下:

Public Sub InitializeMapInfoConnection()

On Error GoTo userCancelled

Set MapInfo = CreateObject("MapInfo.Application") '*创立MapInfo对象

MapInfo.do "Set Application Window " & Mapwin.hwnd

MapInfo.do "Set Window Info Parent " & Mapwin.hwnd

Set theResponder = New MIResponder '*创立theResponde对象

MapInfo.SetCallback theResponder

MapInfo.do "Run Application " + """" + WORKDIR + "\getarea.mbx" + """"

MapInfo.do "Create Menu ""MapperShortcut"" ID 17 As "&"""" + "前一视图"_ + """" + " ID 1002 Calling 806, " & """" + "改变视图" + """" + " ID 1002 Calling_ 805"

……

thereIsAMap = False '*初始化,表示没有地图窗口

mapWinID = 0 '*表示没有窗口

MapInfo.runmenucommand M_TOOLS_SELECTOR '*激活MapInfo的选择工具

Exit Sub

userCancelled:

MsgBox "系统初始化失败,请查看 MAPINFO 是否正确安装!"

End

(3) 现在MapInfo已成为VB应用程序的一个对象,因此可调用MapInfo对象的方法及设置其属性来实现对地图的复杂操作。

具体程序(略)

4 结论

通过实现交通管理指挥系统,实践表明:该系统大大减少从底层实现图形支持系统的难度和工作量,并且界面友好、系统稳定、运行效率较高,在连接MapInfo后,对地图的操作与在MapInfo中几无差别。

原创文章,转载请注明: 转载自MapInfo中文网

本文链接地址: 在VB环境下利用MapInfo实现交通线路信息集成

文章的脚注信息由WordPress的wp-posturl插件自动生成

作者:
该日志由 admin 于2012年04月12日发表在未分类分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。 | +复制链接
转载请注明: 在VB环境下利用MapInfo实现交通线路信息集成
关键字:
【上一篇】
【下一篇】

您可能感兴趣的文章:

1 篇回应 (访客:1 篇, 博主:0 篇)

  1. 露露 说道:

    你好,我最近要做一个实验,比较不同算法实现最短路径的优劣,我是个编程新手,能请教一下你吗?首先mapinfo怎样建立道路拓扑结构,然后算法实现?

    #-49楼

发表评论

[请申请gravatar头像,木有头像的评论可能不会被回复|头像相关帮助]

插入图片