1. 简介
LBS离线数据仓库 是一套包含 WIFI 位置信息、基站位置信息的离线查询 SDK。 提供命令行工具、HTTP服务、C/C++ 函数库多种接入方式。
支持 Linux 和 Windows 7 及以上版本。Linux 支持 CPU 架构:x86-64、ARM64;Windows 支持 x86-64。
推荐配置:内存 8~16G,磁盘 20G 以上。
推荐配置:内存 8~16G,磁盘 20G 以上。
2. 文件结构
bin/ 可执行程序
├── bin/lbsserver HTTP查询服务
└── bin/single_query 命令行查询工具
share/ 数据文件
├── share/cellinfo.bin 基站数据
└── share/wifiinfo.bin WIFI数据
include/ C/C++ API头文件
├── include/lbscommon.h 公共API定义
├── include/lbscell.h 基站查询API定义
└── include/lbswifi.h WIFI查询API定义
lib/ C/C++ API动态库
├── lib/liblbscommon.so 公共API库
├── lib/liblbscell.so 基站查询库
└── lib/liblbswifi.so WIFI查询库
3. HTTP接口服务
3.1 启动HTTP服务
在Linux环境下,执行 bin/lbsserver 启动HTTP服务:
$ bin/lbsserver
可选参数:
| 参数 | 说明 | 默认值 |
|---|---|---|
| -p port | HTTP监听端口 | 80 |
3.2 测试
服务启动后,在浏览器中访问以下页面进行在线测试:
http://127.0.0.1/cell.html
http://127.0.0.1/wifi.html
127.0.0.1 请替换为服务器实际IP地址或域名。
3.3 接口说明
3.3.1 基站查询
接口地址http://127.0.0.1/cell
请求方式GET
返回格式CSV / JSON / XML
请求参数
| 参数 | 类型 | 必选 | 说明 |
|---|---|---|---|
| mcc | int | 必选 | 移动国家码,中国为 460 |
| mnc | int | 必选 | 移动网络码(CDMA填SID) |
| lac | int | 必选 | LAC(LTE填TAC,CDMA填NID) |
| ci | int | 必选 | Cell Identifier(CDMA填BID) |
| coord | string | 可选 | 坐标系:wgs84 / gcj02 / bd09,默认 wgs84 |
| output | string | 可选 | 返回格式:csv / json / xml,默认 csv |
返回格式(CSV)
errcode,纬度,经度,误差范围,地址
errcode 说明:
| 0 | 成功 |
| 10000 | 无结果 |
| 10001 | 参数错误 |
请求示例
http://127.0.0.1/cell?mcc=460&mnc=1&lac=4301&ci=20986&output=xml
3.3.2 WIFI查询
接口地址http://127.0.0.1/wifi
请求方式GET
返回格式CSV / JSON / XML
请求参数
| 参数 | 类型 | 必选 | 说明 |
|---|---|---|---|
| mac | string | 必选 | WIFI路由器MAC地址(BSSID) |
| coord | string | 可选 | 坐标系:wgs84 / gcj02 / bd09,默认 wgs84 |
| output | string | 可选 | 返回格式:csv / json / xml,默认 csv |
返回格式(CSV)
errcode,纬度,经度,误差范围,地址
请求示例
http://127.0.0.1/wifi?mac=00:87:36:05:5d:ea&output=xml
3.3.3 混合定位
接口地址http://127.0.0.1/loc
请求方式GET
说明同时传入基站和WIFI信息,综合定位
请求参数
| 参数 | 类型 | 必选 | 说明 |
|---|---|---|---|
| cl | string | 可选 | 基站信息,格式:MCC,MNC,LAC,CI,信号强度(dBm);多条用分号分隔 |
| wl | string | 可选 | WIFI信息,格式:MAC,信号强度;多条用分号分隔 |
| coord | string | 可选 | 坐标系:wgs84 / gcj02 / bd09,默认 wgs84 |
| output | string | 可选 | 返回格式:csv / json / xml,默认 csv |
请求示例
http://127.0.0.1/loc?cl=460,0,4173,33452,-15;460,0,4173,63939,-22&wl=00:87:36:05:5d:eb,-23;00:19:e0:e7:5e:b4,-13&output=xml
3.3.4 逆地理编码
接口地址http://127.0.0.1/regeo
请求方式GET
说明经纬度坐标转地址
请求参数
| 参数 | 类型 | 必选 | 说明 |
|---|---|---|---|
| lat | float | 必选 | 纬度 |
| lon | float | 必选 | 经度 |
| coord | string | 可选 | 坐标系:wgs84 / gcj02 / bd09,默认 wgs84 |
| output | string | 可选 | 返回格式:csv / json / xml,默认 csv |
请求示例
http://127.0.0.1/regeo?lat=39.987432&lon=116.395123
4. 命令行查询工具
bin/single_query 提供基站/WIFI的命令行查询,结果以 TAB 分隔各字段输出。
4.1 查询基站
$ bin/single_query mcc mnc lac ci
输出字段
| 字段 | 类型 | 取值范围 | 说明 |
|---|---|---|---|
| mcc | 整数 | 0–999 | Mobile Country Code |
| mnc | 整数 | 0–20000 | Mobile Network Code(CDMA填SID) |
| lac | 整数 | 0–65535 | LAC(LTE填TAC,CDMA填NID) |
| ci | 整数 | 0–268435455 | Cell Identifier(CDMA填BID) |
| lat | 浮点数 | -90.0 ~ 90.0 | 纬度(WGS84) |
| lon | 浮点数 | -180.0 ~ 180.0 | 经度(WGS84) |
| acc | 整数 | 0–10000 | 误差范围(米) |
| date | 整数 | — | 数据日期 |
| validity | 浮点数 | 0.0–1.0 | 可信度 |
| addr | 字符串 | — | 地址描述 |
| province | 字符串 | — | 省/自治区/直辖市 |
| city | 字符串 | — | 城市/地区/盟/州 |
| district | 字符串 | — | 区/县/旗/自治县/乡 |
| township | 字符串 | — | 乡/镇/街道 |
示例
$ bin/single_query 460 1 4301 20986 460 1 4301 20986 40.008899 116.483642 903 20191201 0.62 北京市朝阳区... 北京市 北京市 朝阳区 ...
4.2 查询WIFI
$ bin/single_query aa:bb:cc:dd:ee:ff
输出字段
| 字段 | 类型 | 示例值 | 说明 |
|---|---|---|---|
| mac | 字符串 | aa:bb:cc:dd:ee:ff | WIFI路由器BSSID |
| lat | 浮点数 | -90.0 ~ 90.0 | 纬度(WGS84) |
| lon | 浮点数 | -180.0 ~ 180.0 | 经度(WGS84) |
| acc | 整数 | 0–10000 | 误差范围(米) |
| date | 整数 | — | 数据日期 |
| addr | 字符串 | — | 地址描述 |
| province / city / district / township | 字符串 | — | 行政区划 |
示例
$ bin/single_query 00:01:7a:f6:da:c0 00:01:7a:f6:da:c0 39.961166 116.313202 214 20190501 北京市海淀区... 北京市 北京市 海淀区 ...
5. C/C++ API
基站查询
函数签名(定义在 include/lbscell.h):
extern int cell_query(int mcc, int mnc, int lac, int ci,
double *lat, double *lon, int *radius,
int *date, double *validity);
| 参数 | 方向 | 说明 |
|---|---|---|
| mcc, mnc, lac, ci | 输入 | 基站标识 |
| lat, lon | 输出 | 纬度、经度 |
| radius | 输出 | 误差范围(米) |
| date | 输出 | 数据日期 |
| validity | 输出 | 可信度(0.0–1.0) |
返回值:0 表示成功,1 表示无结果。参数说明同 4.1节。
WIFI查询
函数签名(定义在 include/lbswifi.h):
extern int wifi_query(unsigned long long bssid,
double *lat, double *lon, int *radius, int *date);
| 参数 | 方向 | 说明 |
|---|---|---|
| bssid | 输入 | WIFI路由器BSSID(64位整数) |
| lat, lon | 输出 | 纬度、经度 |
| radius | 输出 | 误差范围(米) |
| date | 输出 | 数据日期 |
返回值:0 表示成功,1 表示无结果。参数说明同 4.2节。