您的位置:首页 > 其它

站间距计算工具V2

2020-12-30 21:00 162 查看
背景



目的一:解决不同网络站点之间的距离计算,比如要计算全网GSM共站址的LTE站点;


目的二批量计算不同场景周边的站点,比如一个城市各居民区的覆盖站点清单。

工具源代码





























































import openpyxl,xlrd
import os,sys
importmath,re
importdatetime
#-----------------------数据输出到EXCEL文件------------------------
defwrite_xlsx(dis):
  workbook=openpyxl.Workbook()
  sheet=workbook.active
  sheet.title='最小站间距'
  foriinrange(0,len(dis)):
    forjinrange(0,len(dis[i])):
      sheet.cell(row=i+1,column=j+1,value=dis[i][j])
  workbook.save('最小站间距-'+datetime.datetime.now().strftime('%Y%m%d')+'.xlsx')
#-----------------------程序入口------------------------  
if__name__=='__main__':
  ifos.path.isfile('GSM经纬度.xlsx'):
    GSM_data=xlrd.open_workbook('GSM经纬度.xlsx')
    GSM_table=GSM_data.sheets()[0]
    GSM_Btsname=GSM_table.col_values(0,start_rowx=1,end_rowx=None)
    GSM_lon=GSM_table.col_values(1,start_rowx=1,end_rowx=None)
    GSM_lat=GSM_table.col_values(2,start_rowx=1,end_rowx=None)
  ifos.path.isfile('LTE经纬度.xlsx'):
    LTE_data=xlrd.open_workbook('LTE经纬度.xlsx')
    LTE_table=LTE_data.sheets()[0]
    LTE_Btsname=LTE_table.col_values(0,start_rowx=1,end_rowx=None)
    LTE_lon=LTE_table.col_values(1,start_rowx=1,end_rowx=None)
    LTE_lat=LTE_table.col_values(2,start_rowx=1,end_rowx=None)

  dis=[['网元名称','最小站间距(m)','目标站点']]
  print('最小站间距开始计算,请耐心等待:')
  GSM_lg=len(GSM_Btsname)
  foriinrange(0,GSM_lg):
    Bts_dic=100000000
    tem=[GSM_Btsname[i]]
    name=''
    LTE_lg=len(LTE_Btsname)
    forjinrange(0,LTE_lg):
      lon1=GSM_lon[i]
      lat1=GSM_lat[i]

      lon1,lat1,lon2,lat2=map(math.radians,[float(lon1),float(lat1),float(LTE_lon[j]),float(LTE_lat[j])])  #经纬度转换成弧度
      dlon=lon2-lon1
      dlat=lat2-lat1
      a=math.sin(dlat/2)**2+math.cos(lat1)*math.cos(lat2)*math.sin(dlon/2)**2
      c=2*math.asin(math.sqrt(a))
      r=6371.137#地球平均半径,单位为公里
      dic=(c*r*1000)
      ifdic<Bts_dic:
        Bts_dic=dic
        name=LTE_Btsname[j]
    tem.append(str('%.2f'%Bts_dic))
    tem.append(name)
        dis.append(tem)
        print('+',end='')
        sys.stdout.flush()
    write_xlsx(dis)


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: