如何通过AT指令获取基站定位

浪尽此生 提交于 2019-12-18 02:24:35

基站定位描述

基站定位一般应用于手机用户,手机基站定位服务又叫做移动位置服务(LBS——Location Based Service),它是通过电信移动运营商的网络(如GSM网)获取移动终端用户的位置信息(经纬度坐标),在电子地图平台的支持下,为用户提供相应服务的一种增值业务。

基站定位的大致原理为:移动电话测量不同基站的下行导频信号,得到不同基站下行导频的TOA(Time of Arrival,到达时刻)或TDOA(Time Difference of Arrival,到达时间差),根据该测量结果并结合基站的坐标,一般采用三角公式估计算法,就能够计算出移动电话的位置。其精度很大程度依赖于基站的分布及覆盖范围的大小,有时误差会超过一公里,实际的位置估计算法需要考虑多基站(3个或3个以上)定位的情况,因此算法要复杂很多。一般而言,移动台测量的基站数目越多,测量精度越高,定位性能改善越明显。

 

怎样才能基站定位?

基站定位一般应用在手机端,所以必须获取到基站信息才能进行基站的定位;基站信息

包含:MNC,LAC,CID (Cell) 三个参数;如果获取到以上三个参数即可以通过基站数据库,实现对应基站的位置进行定位,直接地图上显示出基站的位置;

-MCC,Mobile Country Code,移动国家代码(中国的为460);

-MNC,Mobile Network Code,移动网络号码(中国移动为00,中国联通为01);

-LAC,Location Area Code,位置区域码;

-CID,Cell Identity,基站编号,是个16位的数据(范围是0到65535)。

 

如何获取基站信息?

在GSM模块中,可以通过AT指令获取基站信息,以使用UBLOX的GSM模块为例,

当设备注册到移动网络时,按以下步骤即可获取对应的基站信息。

1. 获取MCC和NNC

  AT+COPS=3,2 //设置MCC和NNC输出格式为数字
  AT+COPS=3,2 
  OK

  AT+COPS?  //获取MCC和NNC
  +COPS: 0,2,"46000",0 
  OK

  MCC:移动国家码,共3位,中国为460; 

  MNC:移动网络码,共2位,移动GSM:00、02,移动TD:07,联通GSM:01,电信:03; 

2. 发送AT+CREG=2  //设置基站信息输出

 

3. 发送AT+CREG? //获取基站信息

 

基站信息如何转换为经纬度?

根据个人理解,有如下2种方法:

1. 服务器接收到基站信息之后,在基站数据库中查找对应的经纬度。

  优点:速度快

  缺点:需要在服务器上部署基站数据,且基站数据不能及时更新

2. 通过第三方提供的SDK或API查找对应的经纬度

    优点:数据比较准确,定位较为精确

    缺点:接口不免费

 

附录相关信息:

  1. 淘宝卖基站定位数据库的信息链接
  2. 第三方的基站定位接口描述

谷歌/百度如何实行基站定位:
我想移动运营商应该不会免费提供基站数据库给谷歌/百度,那谷歌百度如何实现基站定位能?
手机地图在使用GPS卫星定位时,误差在10米以内,此时将该手机接收到的多个基站数据(此数据可以包括基站编号等信息,特别注意的是还有信号的强度)提交至后台数据库中保存,随着不断积累,将获得较为完整的基站数据库。(而且这种卫星GPS结合多基站信号强度的定位方式,为以后使用纯基站定位提供了更高的准确性保障。),所以安卓虽然免费,但海量的用户形成海量的数据库,这就是大数据,互联网思维吧。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!