1. 引言
随着网络逐渐成为生活的必需品,提供网络服务的光缆线路数量也在不断的上升,这也为光缆线路的维护工作带来了巨大的困难。一旦线路中出现断点,传统纯人工的维护手段是让维护人员到达客户端并使用光时域反射仪(OTDR)测量客户端到断点的距离 [1],结合线路走向判断断点的大致位置,这个过程将耗费较多的时间及人力,不利于断点的快速修复。
为改变这一现状,不少学者对其进行了研究 [2] - [15],其中设计光缆断点定位系统的不在少数:文献 [7] 与文献 [8] 实现了基于WebGIS的通信线路维护系统,为可视化的光缆维护提供了技术支持;文献 [9] 与文献 [10] 实现了光缆故障定位技术在电力系统中的应用。
文献 [10] 中所设计的系统为目前现有的最新的光缆断点定位系统,其采用百度地图作为断点显示的基本地图,实现了在地图上标明检测到的断点位置,但存在以下问题:维护人员到达现场后,需要从断点光缆的附近站点发出红色光线,用于从现场的众多光缆中寻找出目标光缆,但地图上并未绘制出各条光缆的具体信息,因此不能快速判断出附近站点的位置,进而延缓了修复时间。
本文设计光缆断点定位系统仍然采用百度地图来显示光缆线路及光缆断点的实时信息,同时为解决上述问题,本系统在百度地图上标明了各条线路的实际走向及线路上站点位置,使得维护人员能够直观地得到附近站点的位置,这有效地缩短了目标光缆寻找时间。
2. 系统设计
系统由客户端、服务端、数据库、节点端构成,如图1所示。维护人员在客户端浏览器上输入服务器地址就能够进入到系统主界面,服务端通过查询到数据库中光缆线路站点的经纬度坐标信息后,将站点以图形化的方式渲染到主界面地图区,并将同一线路中的站点按顺序连接形成线路走向。节点端为放置在线路站点上且具有OTDR功能的嵌入式设备,本系统中采用安卓系统来模拟OTDR检测到的断点数据。当客户端发起断点检测请求后,服务端通过数据库控制对应节点进行断点数据采集,通过分析断点数据及节点位置信息计算出断点的经纬度坐标,将其输出到主界面地图区。
系统具有以下三个功能模块:地图显示、线路绘制与修改、断点定位,如图2所示。
各个模块的功能如下:
1) 地图显示:实现加载基本地图、添加缩放控件、设置初始中心点等功能。
2) 线路绘制与修改:实现将光缆线路的具体走向及线路上站点位置绘制到百度地图上;实现在主界面的操作区,能够修改各个线路的站点坐标与站点间光缆长度信息,并在地图上实时更新渲染数据。
3) 断点定位:维护人员在系统主界面可远程向线路上的节点发送检测请求,节点使用OTDR功能检测到自身相对于断点的距离后,将距离数据返回给服务端,服务端结合断点所在光缆两端站点的经纬度以及传回的距离数据,计算出断点的坐标信息并以图形化的方式渲染到百度地图上。
3. 系统实现
3.1. 地图显示
在主界面进行地图显示的实现过程如下:
1) 在服务端视图文件中为地图显示区域预先设置DIV容器,调整容器大小。添加的外部百度地图API (http://api.map.baidu.com/api?v=1.4)脚本引用,将基本地图加载进来。
2) 通过设置地图的centerAndZoom属性来确定显示的中心点以及地图坐标级别。
3) 通过设置地图的NavigationControl属性来添加地图缩放控件。
3.2. 线路绘制与修改
线路绘制功能为本光缆断点定位系统的创新设计,其实现过程如下:
1) 在地图上绘制站点:通过JDBC与数据库进行连接,循环读取各条线路中各个站点的经纬度坐标,将各个坐标值依次赋给二维数组point_data[j][i],并将每个坐标实例化为对应的Point对象,如var p1 = new BMap.Point(<%=point_data[j][i]%>, <%=point_data[j][i]%>);然后使用Marker函数将每个Point对象标记为以绿色实心圆点(point.png),如varmarker1 = new BMap.Marker(p1, new BMap.Icon(point.png);最后使用addOverlay函数将Marker对象输出到百度地图上,如map.addOverlay(marker1)。
2) 在地图上绘制线路:使用Polyline函数将已有的Point对象以直线的方式进行连接,产生Polyline线路对象,如var polyline1 = new BMap.Polyline([p1,p2,p3,……]);然后使用addOverlay函数将Polyline对象输出到百度地图上,如map.addOverlay(polyline1)。
3) 在地图上修改线路:主界面的站点位置与光缆长度按钮分别链接到对应的设置分页面,新数据的设置完成将促使服务端重新向数据库发起读取数据命令,更新地图区的线路。
3.3. 断点地位
客户端首先发起检测请求,服务端根据请求信息中的id将数据库中相应节点的检测状态由0变为1。节点端感应到检测状态后,开启测距功能并将检测到的距离数据写入数据库,同时重置检测状态。服务端结合检测到的距离数据及断点所在光缆两端站点的经纬度坐标,计算出断点的经纬度坐标,其算法如下:
判断断点所在的光缆区间:
其中,
为线路中第i段光缆长度,D为节点返回的距离数据。则根据比例关系可得到:
其中,
为断点所在光缆起始站点纬度,
为断点所在光缆终点站点纬度,
为断点纬度。因此,可以得到断点纬度
:
断点经度同理。最后利用Marker属性将断点坐标以红色水滴标记渲染到地图上。
4. 运行效果测试
在浏览器地址栏上输入http://localhost:8080/进入系统主界面,如图3。
图中左侧地图区域渲染了两条光缆线路,每条线路站点的附近标记了该站点名称,其中具有“*OTDR*”标识的站点为节点放置的位置。点击右下角OTDR1按钮发起对id为1节点的检测请求,节点开启OTDR功能并将检测到的数据返回。节点端采用APP模拟OTDR的检测数据,如图4。
服务端接收到数据后,在主界面更新地图显示,标记断点并在右下角显示测试结果,如图5。
点击主界面右上方的“线路1”按钮进入修改站点位置设置分页面,如图6。
将线路1中站点2的经纬度数据进行修改并提交,浏览器跳转回主界面,同时地图上的对应线路也得到了更新,如图7。
修改光缆长度的测试与修改站点位置的测试类似,不再赘述。
通过本系统的运行效果,与文献 [10] 中光缆断点定位效果进行比较,如图8,可以发现:在地图上能够看清线路走向及线路上站点位置将给维护人员带来更直观的体验;同时针对需要进入附近站点配合检测才能判断目标光缆的这一情形,维护人员在地图上就能够看到附近站点,提高了效率。

Figure 8. Result of optical cable breakpoint location in reference [10]
图8. 文献 [10] 中光缆断点定位效果
5. 结论
本文设计与实现了基于百度地图的光缆断点定位系统,系统的创新功能是在地图上绘制出了光缆线路的具体走向及线路上站点位置,这能够让维护人员更直观地掌握线路信息;同时针对需要进入附近站点配合检测才能判断目标光缆的这一情形,维护人员可通过本系统显示的站点信息快速找到附近站点,为维护工作带来了便利。
基金项目
广西高校中青年教师基础能力提升项目(No. 2019KY0859)。