首页 > 代码库 > 如何通过AT指令获取基站定位
如何通过AT指令获取基站定位
基站定位描述
基站定位一般应用于手机用户,手机基站定位服务又叫做移动位置服务(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模块为例,
当设备注册到移动网络时,按以下步骤即可获取对应的基站信息。
- 发送AT+CIMI //获取IMSI(包括MCC和NNC)
IMSI=MCC+MNC+MSIN
MCC:移动国家码,共3位,中国为460;
MNC:移动网络码,共2位,移动GSM:00、02,移动TD:07,联通GSM:01,电信:03;
MSIN: 移动用户识别号码,共10位;
2. 发送AT+CGREG=2 //设置附着状态
3. 发送AT+CGREG? //获取基站信息
在上图中可知MCC=460,MNC=00,LAC=0X247B,CID=0x0E10。通过基站查询演示http://www.cellid.cn/,可获取位置广东省深圳市南山区工业七路南海大道1069号(22.49669285,113.92006692),与实际位置相差300米,这样好像会被人肉的说。
基站信息如何转换为经纬度?
根据个人理解,有如下2种方法:
1. 服务器接收到基站信息之后,在基站数据库中查找对应的经纬度。
优点:速度快
缺点:需要在服务器上部署基站数据,且基站数据不能及时更新
2. 通过第三方提供的SDK或API查找对应的经纬度
优点:数据比较准确,定位较为精确
缺点:接口不免费
附录相关信息:
- 淘宝卖基站定位数据库的信息链接
- 第三方的基站定位接口描述
谷歌/百度如何实行基站定位:
我想移动运营商应该不会免费提供基站数据库给谷歌/百度,那谷歌百度如何实现基站定位能?
手机地图在使用GPS卫星定位时,误差在10米以内,此时将该手机接收到的多个基站数据(此数据可以包括基站编号等信息,特别注意的是还有信号的强度)提交至后台数据库中保存,随着不断积累,将获得较为完整的基站数据库。(而且这种卫星GPS结合多基站信号强度的定位方式,为以后使用纯基站定位提供了更高的准确性保障。),所以安卓虽然免费,但海量的用户形成海量的数据库,这就是大数据,互联网思维吧。
如何通过AT指令获取基站定位