作者:sBToo
一、引言
我国的GSM网络经过前几年的飞速扩容,网络容量业已接近上限,目前已维持在一个相对稳定的规模,网络服务质量的提高途径也由初期的粗放式的扩大网络规模向细致、系统的网络优化工程转变,而目前网络优化过程中需要分析的参数多、数据量大与当今市场上工具软件的功能单一,分析效率低之间的矛盾愈来愈突出。
因此,设计开发综合功能强、优化分析计算自动化程度高、操作界面友好的移动通信无线网络优化系统软件具有重要的应用价值和市场前景。
路测数据的回放模块是无线网络优化系统软件中的一个重要组成部分,以图形化的方式实现了对GSM无线网络实际运行质量情况的再现,对于辅助网优人员制定合理的网优方案和网络运营商维持整网的高质量运行具有非凡的意义。在进行无线网络优化的过程中,进行道路测试是对网络运行质量评估过程中是必不可少的环节。道路测试(以下简称路测)是网优人员利用路测手机以打电话的方式获取城镇道路沿线的信号覆盖情况和通话质量情况的一种网优手段,路测获取的实际通话质量信息以某种格式的文档形式被保存在计算机中,网优人员在路测完毕后需要对得到的数据进行分析,以便对所测试网络的运行状况进行评估。在对数据的分析过程中网优人员往往需要借助专业的路测软件辅助完成,此时,就需要路测软件能对获取的路测数据以图形的方式再现网络信号的实际质量情况,并提供相关的分析功能,软件的这种功能就被称为路测数据回放与分析。本文将主要论述路测数据回放功能的实现方法,并对如何图形化显示路测数据和在Gis地图上跟踪显示路测点等要害技术的提出解决办法。
二、路测数据的格式分析
目前路测所用的手机大多数是非国产的,包括爱立信公司的BEO系列和SAGEM系列等等,但是,无论哪种型号的手机传送和保存的都是GSM网络的各种测试指标信号,这些代表测试指标值的信号以二进制数据流的形式传送到计算机中,计算机通过串口接收这些信号,专业的路测软件会解析这些信号,并针对我国网络的实际情况把需要的部分提取出来并保存成某种格式,以便进行回放和分析。不同的路测软件会把这些数据保存成不同格式类型的数据文件。这里以广东省珠海万禾公司的.ant类型的文件为例进行分析。
.ant文件保存的是路测信息,可以用Excel2000打开这种格式的文件来查看数据记录的内容。可以看到这种文件的格式类似关系数据库中的数据表,其中有一个time字段代表实际路测时的时间(精确到毫秒),以time字段为主健并进行排序,每一条记录记载了对应时间点的相关信息,包括路测点的经纬度,场强(rxlev),通话质量(rxqual),第三层信令(message)等等将近100个指标。
在进行数据回放之前要把文件中的数据导入到软件所使用的数据库中形成路测表,回放是针对数据库的路测表的信息进行的。
三、路测数据回放的实现
针对路测表的路测数据回放就是要以图形的形式按照时间先后再现路测信号。从运行界面上可以看出路测数据回放模块的部分功能。这些功能的实现是通过灵活应用VB的一些相关控件、方法以及设计和编程技巧来完成的。
1.路测数据回放的图形化显示
在数据回放时由于要按照时间顺序进行动态回放,所以需要使用timer控件,timer控件是一个用于时间控制的控件,被广泛应用于需要定时操作的各种场合。timer控件的属性不多,其中有两个较为重要的属性。一个是enabled属性,当该控件的enabled属性为true时触发该控件的_Timer事件,利用这个属性可以控制回放的开始、暂停、停止、重放等操作;另一个是interval属性,interval值代表了每次响应_Timer事件的时间间隔,单位是毫秒,进行路测数据回放可以把这个属性值设置成不同的值以便对回放速度进行控制。
要进行图形化的显示,需要用到picture控件(不同于显示图像的image控件),把picture控件拖拽成一定大小用来作为回放显示的主窗口,回放的图形曲线就可以利用这个控件来实现。在回放时需要显示的指标数据包括每个时间点对应信号的场强值、通话质量值和时间提前量(TA值)等,这些指标都是一些标量值。这里不妨以场强值(rxlev)为例说明一下如何图形化表示场强值的大小。场强的值是一些-110到-47的数,单位为dB,总共分64个等级。现在假定picture控件的scale属性被设置成了Picture1.Scale(0,0)-(600,200),这就代表picture控件覆盖区域被分成了横轴为600单位、纵轴为200单位的坐标区域。可以在这个坐标区域内画图线来实现图形化。在picture显示区域显示图形,用的是line方法,line方法的编程语句是:
line(起始点横坐标,起始点纵坐标)-(终止点横坐标,终止点纵坐标),划线颜色
需要注重的是,picture控件的原点是在控件的左上角,纵坐标轴向下为正,横坐标向右为正。
当需要显示的是柱状图时,起始点和终止点的横坐标值相同,起始点纵坐标值应该是用户定义的坐标原点在控件坐标系中所在的坐标,如下面一句:
Picture1.Line(Line_Show_position-flag_coefficient* 600+0.5, 112)-(Line_Show_position - flag_ coefficient * 600 + 0.5, 112- 1.2 * drivetestrst.fields("Rxlev_S") ), vbGreen
句中的Line_Show_position等是用户编程时定义的变量。
假如要实现折线图的显示,也是用line方法,只不过此时起始点和终止点的横纵坐标值都会不同,line语句类似下面一句:
Picture1.Line(I-0.5, 112-1.2 * Rxlev_S )-(I + 0.5,112-1.2 * Rxlev_S ),vbBlue
这时在显示区域就会出现一条短短的直线,当很多这样的直线首尾连接在一起时就形成了折线。注重,VB中有一个line控件也能实现画线功能,这个line控件不同于上述的line方法,后者本身就是一个拥有属性和方法的对象,而前者只是picture控件的一个方法,所以为了保证这些图形被遮盖后仍然能保持原样,必须在画线之前执行Picture1.AutoRedraw=True语句。
当系统检查到数据中出现了掉话、壅塞等情况时,需要以图标的形式把这些信令的状态标示出来。要形成这些效果,需要用到picturebox控件,这个控件是一个图片包容器,它有一个picture属性,把该属性的内容设置成需要显示的图片后,用left和top属性设置图片的位置,用visible属性来控制图片的显示或隐藏就可以方便地实现表示壅塞、掉话等信令的状态了。
2.回放内容的回滚
对回放内容的回滚是指当网优人员在观测回放时,如发现异常,则会拖动滚动条以重新观测回放过的内容。由于picture本身不支持滚动显示的功能,也就是picture控件本身并没有用于滚动显示的属性,因此,需要采取变通的办法来实现。本文采用的是在picture控件中嵌入flatscrollbar控件的方法。flatscrollbar是滚动条控件,专门用于拖动显示。flatscrollbar通过max和value属性来实现滚动显示,max属性用于设置一个最大值,value属性就是用户点击滚动条所得到的位置。比如,某文件有5000条记录,而在回放时每一屏幕只能看到600条记录的图形显示,因此,当用户需要察看任意位置记录显示的时候,就需要拖动滚动条,当用户拖动由faltscrollbar实现的滚动条到某个位置时(比如拖动到第3000条记录内容),此时,faltscrollbar控件的max属性可以设置成5000,而拖动后的value值等于3000,可以应用flatscrollbar的这个属性来实现滚动显示控制。可以把指向路测数据内容的数据集指针(游标)指向3000,在picture控件上显示相应部分数据的图形。当然,如何再现图形还要涉及到一些细节却很重要的问题,比如如何让拖动更加平滑,如何保存回放过的状态等等,这些问题都需要采取一些灵活的办法去解决,这里就不具体介绍了。
3.在GIS地图上进行路测点跟踪
仅仅实现路测数据回放的图形化显示对于路测数据的分析还是不够的,网优人员往往要结合电子地图来跟踪路测过程的实际路线从而找出每个路测点的实际地理位置,当观测到异常信号时,网优人员需要根据发生异常的路测点的实际地理情况进行综合的分析来判定异常原因并制定网优方案,因此,路测数据回放还包括在地图上进行路测点跟踪的功能。完成这一功能需要选用合适的GIS平台,这里以MapInfoProfessional7.0进行说明。
进行路测点的跟踪时,可以采取如下方法进行:
首先在现有Gis地图上创建一个供回放用的路测点图层,当预备对某次路测进行回放时,可以根据回放纪录的经纬度坐标(当然,记录中应该会保存经纬度信息的)把所有的路测点添加入该图层并在地图上全部显示出来,以便让网优人员对路测点位置有一个宏观的熟悉。
当具体回放到某个点的时候,采取的是把对应路测点高亮显示的办法。所谓的高亮显示,其实是创建了一个临时图层,把正在回放的点加入这个临时图层,(同时删掉原来的点),设置这个临时图层上的点的风格与路测点图层上点的风格不同,这种风格的不同在视觉效果上就形成了一种所谓的高亮显示。语句类似以下所示:
MapApp.Do"setstyleSymbol MakeSymbol( 34, 452352352, 10)"
MapApp.Do"insertintocosmetic1(obj) values(createpoint(" && X && "," && Y && "))" 'cosmetic1是临时图层的名称
这样当回放进行的时候,路测点就会跟着回放的过程相应的“跟踪”了。不过,需要注重的是,当路测点出现在了视线边缘时,此时为了更人性化的跟踪,应该让当前路测点自动的居中显示。语句如下所示:
mapcenter("&& X && "," && Y && ") '把地图中心调整到以点point(x, y)为中心的位置
需要注重的是:虽然上述方法能够完成路测点跟踪的功能,但是,从实践中发现,在跟踪过程中这些路测点会不断。