基于站间距及方位角加权的邻区添加工具实现_第1页
基于站间距及方位角加权的邻区添加工具实现_第2页
基于站间距及方位角加权的邻区添加工具实现_第3页
基于站间距及方位角加权的邻区添加工具实现_第4页
基于站间距及方位角加权的邻区添加工具实现_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于站间距及方位角加权的邻区添加工具实现新余电信基于站间距及方位角加权的邻区添加工具实现龙颖2016/8/5摘要:本课题设计一个针对小区间方位角进行距离加权的算法,从而更加贴近网络现状进行添加邻区。目录一、设计背景2二、设计目标及方法2三、设计流程图33.1设计流程图3四、设计过程及结果44.1 核心算法44.2 检索优化算法64.3经纬度算两点间距离算法104.4经纬度算两点间方位角算法11五、设计结论与收获13六、参考资料14七、使用说明书及工具14一、 设计背景目前在众多软件中有很多邻区添加工具,但是较多工具中邻区添加算法大多没有对站点间小区的覆盖范围纳入考虑,故在小区对边缘站点添加邻区

2、时,他们将邻站小区与本站小区正朝向的优先级与小区负朝向的优先级相同,显然按照此类邻区添加算法与现网网络模型不匹配。现本课题设计一个针对小区间方位角进行距离加权的算法,从而更加贴近网络现状进行添加邻区。二、 设计目标及方法主要设计目标如下:设计一个算法,使得在邻区关系添加过程中,能根据方位角和地理位置区分对原小区的邻区优先级,从而更合理的添加邻区。完成设计共需要实现4个功能:l 小区间方位角加权的距离实现l 优化检索算法l 计算本小区与邻区间的站间距l 计算本小区与邻区间方位角差值本设计将采用VBA程序语言,结合EXCEL界面做成一个工具,主要在EXCEL工具内部实现上述功能。三、 设计流程图3

3、.1设计流程图本工具主要设计流程图如下:四、 设计过程及结果12344.1 核心算法方位角加权,可以把扇区考虑成一个扇形的区域,加权系数则是从扇柄到扇形外部的距离,当加权系数大时,距离扇柄的距离大,当加权系数小时,则到扇柄的距离小。如下图所示:加权情况示意图则为了有效的将三个小区区分,可以对经纬度点根据方位角进行加权,这样加权越大,三个扇区的位置差异就越明显,从而能够对方位角与距离进行判断,添加更合理的网络邻区关系。如下图所示:加权情况在实际网络中的应用核心算法由于小区距离的方位角DAL是由A向B的,所以夹角a=方位角A-(DAL+180)夹角b=方位角B-DAL,算得夹角后。在垂直于小区连线

4、方向通过SIN函数乘以加权系数D得到D_SHORT,小区连线方向通过COS函数乘以加权系数D加上小区距离,得到加权后连线的方向的长度D_LONG。上述D_LONG与D_SHORT得到可以通过勾股定理,算得加权后的小区距离(见以下代码实现部分)核心代码实现部分 Do While i field_0,tiers1-field_1,tiers2-field_2,,tiers19-field_19。(一般20层即可)。每个对应笛卡尔层次的域将根据当前这条记录的经纬度通过笛卡尔算法计算出归属于当前层的网格,然后将gridId(网格唯一标示)以term的方式存入索引。这样每条记录关于笛卡尔0-19的域将都

5、会有一个gridId对应起来。目前索引的实现核心代码: ActiveCell.FormulaR1C1=IF(MOD(RC-5,0.1)-MOD(R-1C-5,0.1)= & (xnow - 1), _ Operator:=xlAnd, Criteria2:= & (ynow - 1), _ Operator:=xlAnd, Criteria2:= & (xnow - 1), _ Operator:=xlAnd, Criteria2:= & (ynow - 1), _ Operator:=xlAnd, Criteria2:= & (ynow + 1) .Cells.Copy End With I

6、f sheets(筛选前).FilterMode = True Then sheets(筛选前).ShowAllData 清除筛选 sheets(筛选前).Activate sheets(筛选前).Cells.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False4.3经纬度算两点间距离算法经纬度距离算法在GIS应用中,计算两点之间距离的公式非常重要,这里仅列出几种计算方法。假设地球是一个标准球体,半径为R,并且假设东经为正,西经为负,北纬为正,南纬为负,则A(x,

7、y)的坐标可表示为(R*cosy*cosx,R*cosy*sinx,R*siny)B(a,b) 的坐标可表示为(R*cosb*cosa,R*cosb*sina,R*sinb)于是,AB对于球心所张的角的余弦大小为cosb*cosy*(cosa*cosx+sina*sinx)+sinb*siny=cosb*cosy*cos(a-x)+sinb*siny因此AB两点的球面距离为R*arccoscosb*cosy*cos(a-x)+sinb*siny注意几点:1.x,y,a,b都是角度,最后结果中给出的arccos因为弧度形式;2.所谓的“东经为正,西经为负,北纬为正,南纬为负”是为了计算的方便。比

8、如某点为西经145,南纬36,那么计算时可用(-145,-36);3.AB对球心所张角的球法实际上是求和两向量的夹角K。用公式*=|OA|*|OB|*cosK可以得到;4.还有对相同点进行处理等。代码实现部分:Public Function Cal_Long_Lat(ByVal long1 As Double, ByVal lat1 As Double, ByVal long2 As Double, ByVal lat2 As Double) As Double 单位公里Const pi As Double = 3.1415926535Dim AngleLong1, AngleLat1, An

9、gleLong2, AngleLat2 As DoubleAngleLong1 = long1 * pi / 180AngleLat1 = lat1 * pi / 180AngleLong2 = long2 * pi / 180AngleLat2 = lat2 * pi / 180Dim sinX, cosX As DoublesinX = Sin(AngleLat1) * Sin(AngleLat2)cosX = Cos(AngleLat1) * Cos(AngleLat2) * Cos(AngleLong2 - AngleLong1)X = sinX + cosXOn Error Resu

10、me Nextax = Atn(-X / Sqr(-X * X + 1) + 2 * Atn(1)Cal_Long_Lat = 6368.16 * axEnd Function4.4经纬度算两点间方位角算法经纬度算法示意图A,B,C表示球面上的三个点及球面上“弧线”在该点处所夹的角a,b,c表示A,B,C三点的对“弧”两端点与地心连线所夹的角(其实这里解释成ABC三点对弧的弧度更方便)O为球心L为AB两点间球面距离l 首先:在知道AB点经纬度后,要用到第一个公式,三面角余弦公式,AOCB是面AOC与面BOC的二面角,为了方便,写成这个样子这里将已知数据代入,公式便写成:二面角AOCB的度数就是

11、两点经度之差l 其次:知道了角c的余弦值后要求得它的正弦值,所用的公式就是三角函数公式里最基本的“扣方加赛方等于1”的一个变形l 第三步:求得正弦后,接下来要用一个不太常用的公式,球面正弦公式将已知数据代入并稍微变形一下,公式写为:用反正弦函数求角度,于是上式可直接写成这里需要注意一点,一开始的假设便是求B点相对于A点的方位角,因此这里是Bj-Aj,不要写反,否则得不到正确结果。在此得到的结果并不总符合对方位角的定义,因此要根据B相对于A的位置在四个象限两个轴上进行讨论,依据不同情况对计算结果进行不同处理。假设A点固定于原点,则:B点在第一象限,Azimuth=A;B在第二象限,Azimuth

12、=360+A;B在第三四象限,Azimuth=180-A。经过一系列计算,最后,就得到了最终结果。代码实现部分: Public Function qiufangweijiao(ByVal lon1 As Double, ByVal lat1 As Double, ByVal lon2 As Double, ByVal lat2 As Double) As Integer Const pi As Double = 3.1415926535Dim avlat As DoubleDim qiufangweijiaos As Doubleavlat = (lat1 + lat2) / 2If lat1

13、 - lat2 = 0 Then qiufangweijiaos = 90Else qiufangweijiaos = 180 - Atn(lon1 - lon2) * Cos(avlat) / (lat1 - lat2) * 180 / piEnd If If lat1 lat2 Then qiufangweijiaos = qiufangweijiaos + 180 End If If qiufangweijiaos = 360 Then qiufangweijiaos = -360 + qiufangweijiaos End If qiufangweijiao = Round(qiufa

14、ngweijiaos, 0)End Function五、 设计结论与收获目前该工具实现了基于方位角加权邻区的添加功能,并邻区代码实现。较之前的邻区添加工具相比,更加贴近网络情况。在设计过程中熟悉了VBA一些循环算法及三角函数命令,最重要的是加强了设计队伍对于扇区结构的认识,把扇区的结构量化具体化。本次的设计从数量、距离两个方面对邻区添加功能进行实现,现网网络复杂,不同场景下无线环境不一,后续可以结合网络指标情况及地理环境情况对邻区进行优化,希望本工具能对后续一些工具或软件的开发提供灵感及借鉴,为网络优化及现代化建设出功出力。感谢新余电信及华为公司对本次设计的大力支持!六、 参考资料1、基于So

15、lr的LBS(地理位置搜索)实现原理2、根据两点的经纬度求方位角和距离,等七、 使用说明书及工具7.1使用说明书1 首先在现网工参SHEET中贴入工参,包括:eNodeBID、CellID、SectorID、Longitude、Latitude、站名、Azimuth。以上所有字段都是必填项,请选择性粘贴为数值。如下图所示:2 在规划首页贴入需要规划的数据,包括:eNodeBID、CellID、SectorID、Longitude、Latitude、站名、Azimuth。以上所有字段都是必填项,请选择性粘贴为数值。如下图所示:3 在操作界面设置好参数:在脚本SHEET输入邻区代码公式。第一行公式将会保留以便后续修改,第二行至最后会将公式转化为文本。每次写好公式后可以保存该工具,下次打开就可以使用上次写好的脚本公式。(总计可以保存19个)4 在操作界面设置好参数并运行:可以选择基于半径和基于数量的2种算法:l A:半径算法,填写好纳入筛选邻区的半径范围(例如下图满足2KM的范围内是邻区筛选的条件之一。填好方位角影响参数后,能将邻区的同站小区根据方位角区邻区优先级。点击运行半径算法后,即可在脚本页面得到结果。l B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论