线的基站侧的任意一点接收到的电磁波信号肯定会比另一侧基站的信号强度要大。由于信号强度用影响通话的质量,应选择邻侧基站作为主要服务基站。
从几何角度分析,两基站的分界线是两点之间连线的垂直平分线,将整个平面分为两个半平面,各半平面中任何一点与本半平面内基站的距离都要比到另一基站距离小。当基站数量在2个以上时,整个平面会划分为多个包含一个基站的区域,区域中任何一点都与本区域内基站距离最近,因此这些区域能够看作是基站的覆盖区域。我们将这种由多个点将平面划分成的图称为Voronoi图。
Voronoi图是计算几何的重要研究内容,在计算几何理论和应用中发挥着重大作用.在计算几何中,用Voronoi图成功解决了最近点查找、最大空圆、点的凸包、最小树等问题[9]
Voronoi图因为综合了矢量数据结构中图形与空间对象一一对应以及栅格数据结构中对空间连续铺盖的双重特点,可以良好地反映非接触地物之间的邻近关系[5],并使空间操作局部化,维护了整体拓扑关系的稳定性,所以被认为是一种有发展前途的实现动态GIS的方法。[2]
三、绘制实现方法
小区模拟覆盖区域绘制的输入数据是若干基站的位置信息,输出数据是由端点和连线构成的Voronoi图,处理过程以Voronoi图的生成算法将点转化为图。
地理信息系统根据其内容可分为两大基本类型:一是应用型地理信息系统,以某一、领域或工作为主要内容,包括专题地理信息系统和区域综合地理信息系统;二是工具型地理信息系统,也就是GIS工具软件包。[8]本功能作为网络优化系统的一个功能模块,利用已有的地理信息系统,即MapInfo产品包进行应用型GIS的开发。
基站的经纬度信息保存在中,通常采用支持空间数据访问的系统。Voronoi图的呈现依赖于应用程序的电子地图组件,目前常见的GIS软件有Arc/Info系列、IntergraphGIS系列、Bentley系列和MapGIS系列。本文采用的系统是Oracle10g,地图组件选用MapInfo公司的MapXtreme Java,使用Java语言编程实现。
由于基站的位置是经纬度形式,基站在地球球面上的位置并不是严格的平面,如果要将基站显示为平面上的点,必须先经过GPS的地图平面化的处理,使原来三维的球面可以表示在二维的平面上,类似于地图的功能。在计算几何学科中,人们形成了多种计算由点集生成Voronoi图的方法,其中Fortune算法的复杂度为O(nlogn),是计算Voronoi图的最优算法。mapxtreme
Voronoi图的Fortune算法的原理是以扫描线自上而下扫描由点所在的平面,在扫描过程中利用发生的特定事件记录构建Voronoi图所需的端点以连线信息,并由此生成Voronoi图。数据结构是算法的骨骼,在Voronoi算法利用列表保存端点,利用双向链接表保存边,扫描过程中事件存储在队列中,由于事件点的发现需要高效的搜索算法,因此以二叉搜索树作为搜索使用的数据结构,保存扫描时的点和由点和扫描线构成的弧,可以将搜索指定条件的节点所需的时间复杂度保持在O(logn),因而能够提高搜索时的效率。
MapXtremeJava需要涉及到包含记录和地图的文件。数据既可以采用MapInfo格式,也可采用空间数据的格式。由于小区模拟使用的数据存储在Oracle,因此空间数据需要使用JDBC驱动程序连接RDBMS访问数据。
小区的模拟覆盖地图包含多个图层,可以选择将Voronoi图的绘制放在已有图层中,也可以单独使用一个新图层。由于Voronoi图的区域可以帮助选择和分析小区,因而最好建立新图层。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-28686-1.html
#吴亦凡##挑战者吴亦凡#