很多埋地物联网终端、室内电表这类设备,本身没有 GPS 模块。可以通过读取周边基站信息,实现粗定位,获取设备大致所在城市与片区。当设备被挪走、异地上线,脱离预设部署区域时,系统就可以触发位置异常告警。
一、接口说明
核心能力:拿到设备采集的基站信息(MCC/MNC/LAC/CI),反解析出这个基站对应的地理位置。
终端扫描周边基站并获取基站编号,将参数提交给定位接口;服务端查询基站库得到基站坐标,结合信号强度,计算终端的粗略位置。
需要注意的是,因为不靠GPS,靠手机信号塔,所以不是精准坐标,只能给出大致范围。
二、接口使用流程
1、输入以下请求参数
| 名称 | 必填 | 类型 | 说明 |
|---|---|---|---|
| key | 是 | string | 个人中心查看 |
| mnc | 是 | int | 基站类型 0移动 1联通 (电信对应sid) |
| lac | 是 | int | 小区号(电信对应nid) |
| cellid | 是 | int | 基站号(电信对应bid) |
数据来源:探数API
接口支持移动、联通、电信2G/3G/4G基站位置查询。注意电信要做区分,按照提示输入。
2、返回结果
| 名称 | 类型 | 说明 |
|---|---|---|
| lat | string | 维度,wgs84坐标系 |
| lng | string | 经度,wgs84坐标系 |
| radius | string | 信号覆盖范围(单位:米,精度半径) |
| addr | string | 地址 |
数据来源:探数API
三、Json返回示例
{
"data": {
"lat": "31.056400",
"lng": "105.110687",
"radius": 736,
"addr": "四川省绵阳市三台县潼川镇长林村;205省道与三象路路口东北659米"
}
}
设备读到的基站编号,API 查到这个信号塔在四川绵阳三台县长林村一带;你的设备就在这个塔周围736 米范围以内。
例子中的lat 纬度 31.056400;lng经度 105.110687(WGS84)
这个坐标,是基站的坐标,不是设备精准位置。设备在这个塔的信号覆盖范围内。
radius:736(单位米,重点) 以基站为圆心,设备可能在这个基站736米范围内任意位置。
addr:结构化地址 基站对应的文字地址,方便页面直接展示给客户看。
四、开发时要注意
地图展示时,不要只打一个点,建议画圆形圈标注误差范围,避免客户误以为定位精准。
坐标系是 WGS84,如果对接高德 / 百度地图,需要做坐标转换。
radius 数值越大,定位越不准;农村郊区基站稀疏,radius 经常上千米。
五、python接入方法
import urllib, urllib3, sys, uuid
import ssl
host = 'https://tscell.market.alicloudapi.com'
path = '/cell/index'
method = 'GET'
appcode = '你自己的AppCode'
querys = 'mnc=0&lac=33204&cellid=202944490'
bodys = {
}
url = host + path + '?' + querys
http = urllib3.PoolManager()
headers = {
'Authorization': 'APPCODE ' + appcode
}
response = http.request('GET', url, headers=headers)
content = response.data.decode('utf-8')
if (content):
print(content)