如何通过设备基站获取设备经纬度

时间:2023-02-17 19:09:49

最近有一个客户咨询如何通过基站获取设备的经纬度,所以查了一下相关资料,分享给大家。

基站是运营商(移动,联通,电信)的设备,这些设备的分配的使用是由运营商来管理的,但好在基站的信息有一个行业规则,基站编号有一定的规则。

基站基础知识

基站图片

如何通过设备基站获取设备经纬度

基站数据

MCC:国家码。如 460 表示中国
MNC:运营商码。0 代表移动 2G,1 代表联通 2G
LAC:位置区码。可以理解为大区
CellID:基站塔编码。可以理解为小区

一般定位是需要以上几个信息的

定位原理

原理有点类似于 md5 密码破解一样,就是有一些同时带有基站定位和 GPS 定位的硬件设备,上传两样数据,这样两样数据就有了关联。
其他用户再根据基站信息查询坐标时,就有了数据可查询。随着这样的数据越来越多,就有了这样的库。

纯粹依赖移动、联通、电信等移动网络定位,定位精度在 500 米-5000 米之间。
GPS 定位结果
通过设备 GPS 定位模块返回的定位结果,精度较高,在 10 米-100 米左右

查询服务

openGPS.cn 网站
https://www.opengps.cn/data/cell/search.aspx

上面有一些基站位置是查询不到的。
基于浏览器定位功能也定位不到,原因不太清楚。

服务端

高德

https://lbs.amap.com/
如何通过设备基站获取设备经纬度

申请高德账户,认证的企业用户,然后申请才能开通基站定位功能,而且网页没有相关的 API,申请通过后会得到一个 PDF 技术文档。
调用过程需要 key
调用方式 http get 方式

http://apilocate.amap.com/position?accesstype=0&imei=352315052834187&smac=E0:DB:55:E4:C7:49&cdma=1&bts=13824,1,1838,1674723,575739,-52&serverip=10.2.166.4&output=xml&ke y=<用户Key>

返回数据

{
  "infocode": "10000",
  "result": {
    "city": "郑州市",
    "province": "河南省",
    // 定位附近的 poi 名称-
    "poi": "香雪儿面包房(枫杨街店)",
    // 区域编码-
    "adcode": "410102",
    "street": "枫杨街",
    "desc": "河南省 郑州市 中原区 枫杨街 靠近香雪儿面包房(枫杨街店)",
    "country": "中国",
    // 定位类型,0:没有得到定位结果;其他数字为:正常获取定位结果
    "type": "4",
    // 经纬度 经度longitude 113.5633803    纬度latitude:34.813311
    "location": "113.5633803,34.8133111",
    "road": "枫杨街",
    // 定位精度半径,单位:米
    "radius": "550",
    "citycode": "0371"
  },
  "info": "OK",
  // 返回状态,值为 0 或 1,0 代表 false
  "status": "1"
}

LBS 数据仓库

免费的根据基站获取经纬度的 API 接口,详细介绍看接口说明即可。
http://www.cellocation.com/api/

腾讯

腾讯说不提供相应服务,但查其文档,需要联系客服开通才可以。
https://lbs.qq.com/service/webService/webServiceGuide/location

总结

最后我们选择的是高德,为什么免费的没有用呢?经过测试,免费的质量较差,有一些基站免费的无法定位到,但高德的可以。
高德的品牌影响力稍微大一些。
而且高德的 API 小量使用时是免费的,我们使用量不大,目前还没有付费,只要注册认证就可以使用。

需要高德 API 文档的,可以关注我公众号,回复“定位”,自动获取。