本文介绍LBS数据仓库基站WIFI位置数据库配套软件的使用方法和开发程序库的API接口。
1. 软件介绍
本产品的数据以加密二进制专用格式保存基站编码/WIFI BSSID和与之对应的经纬度,只能通过配套的查询软件根据已知基站编码/BSSID查询经纬度地址,不能以明文形式导入常规数据库软件。
本产品的查询软件支持各种Linux发行版和Windows 7以上的操作系统,不依赖任何外部软件和第三方库。Linux平台支持CPU架构x86-64和ARM64,Windows平台支持x86-64。支持最低硬件配置双核4G内存20G硬盘,推荐硬件配置8核16G内存20G硬盘。
2. 目录结构和文件说明
- bin 二进制程序目录
- bin/lbsserver 本地HTTP接口服务程序
- bin/single_query 本地命令行单次查询程序
- share 数据文件目录
- share/cellinfo.bin 基站数据文件
- share/wifiinfo.bin WIFI数据文件
- include 开发程序库C/C++ API头文件目录
- lbscommon.h 公用函数API头文件
- lbscell.h 基站数据查询API头文件
- lbswifi.h WIFI数据查询API头文件
- lib 开发程序库C/C++ API库文件目录
- liblbscommon.so 公用API库文件
- liblbscell.so 基站数据查询库文件
- liblbswifi.so WIFI数据查询库文件
3. 本地HTTP接口服务
3.1 启动HTTP接口服务
在Linux命令行下运行 bin/lbsserver 程序,启动HTTP接口服务。
$ bin/lbsserver
可选参数
-p port 指定HTTP服务端口,默认80
3.2 网页查询
HTTP接口服务启动后,可打开浏览器访问
http://127.0.0.1/cell.html
http://127.0.0.1/wifi.html
进行可视化的单次基站编码查询和WIFI BSSID查询。该页面在连接互联网的环境下可以在地图上标记查询到的基站/WIFI热点位置,如无互联网连接也可以查询经纬度结果,但不会加载在线地图。
127.0.0.1表示本机环境下服务器地址,请根据实际部署环境下的域名、IP地址和端口号自行修改,下同。
3.3 HTTP查询接口
3.3.1 基站查询接口
接口地址: http://127.0.0.1/cell
支持格式: CSV/JSON/XML
请求方式: GET
请求示例: http://127.0.0.1/cell?mcc=460&mnc=1&lac=4301&ci=20986&output=xml
请求参数:
名称 | 类型 | 必填 | 说明 |
mcc | int | 是 | mcc国家代码:中国代码 460 |
mnc | int | 是 | mnc网络类型:0移动,1联通(电信对应sid),十进制 |
lac | int | 是 | lac(电信对应nid),十进制 |
ci | int | 是 | cellid(电信对应bid),十进制 |
coord | string | 否 | 坐标类型(wgs84/gcj02/bd09),默认wgs84 |
output | string | 否 | 返回格式(csv/json/xml),默认csv |
返回数据格式:CSV
errcode,纬度,经度,精度半径,地址
errcode
0: 成功
10000: 参数错误
10001: 无查询结果
示例:
0,39.999024,116.476159,222,”北京市朝阳区望京街道北京市望京实验学校(宝星分校);阜安路与宏泰东街路口西231米”
3.3.2 WIFI查询接口
接口地址: http://127.0.0.1/wifi
支持格式: CSV/JSON/XML
请求方式: GET
请求示例: http://127.0.0.1/wifi?mac=00:87:36:05:5d:ea&output=xml
请求参数:
名称 | 类型 | 必填 | 说明 |
mac | string | 是 | WIFI热点的MAC地址(BSSID) |
coord | string | 否 | 坐标类型(wgs84/gcj02/bd09),默认wgs84 |
output | string | 否 | 返回格式(csv/json/xml),默认csv |
返回数据格式:CSV
errcode,纬度,经度,精度半径,地址
errcode
0: 成功
10000: 参数错误
10001: 无查询结果
示例:
0,39.985536,116.463746,73,”北京市朝阳区望京街道望京大厦(西门);望花路与望京中环南路路口东19米”
3.3.3 混合定位接口
接口地址: http://127.0.0.1/loc
支持格式: CSV/JSON/XML
请求方式: GET
请求示例: 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
请求参数:
名称 | 类型 | 必填 | 说明 |
cl | string | 否 | 临近基站列表,基站之间以分号分隔,每条基站信息对应5个参数,以逗号分隔,分别为MCC,MNC,LAC,CI,信号强度,其中信号强度的单位是dBm |
wl | string | 否 | 临近WIFI热点列表,WIFI热点之间以分号分隔,每条WIFI热点信息对应两个参数,分别为MAC地址和信号强度 |
coord | string | 否 | 坐标类型(wgs84/gcj02/bd09),默认wgs84 |
output | string | 否 | 返回格式(csv/json/xml),默认csv |
返回数据格式:CSV
errcode,纬度,经度,精度半径,地址
errcode
0: 成功
10000: 参数错误
10001: 无查询结果
示例:
0,39.956357,116.3115935,100,北京市海淀区紫竹院街道中惠元小区5号楼;魏公村路与民族大学西路路口东北88米
3.3.4 经纬度解析接口
接口地址: http://127.0.0.1/regeo
支持格式: CSV/JSON/XML
请求方式: GET
请求示例: http://127.0.0.1/regeo?lat=39.987432&lon=116.395123
请求参数:
名称 | 类型 | 必填 | 说明 |
lat | float | 是 | 纬度 |
lon | float | 是 | 经度 |
coord | string | 否 | 坐标类型(wgs84/gcj02/bd09),默认wgs84 |
output | string | 否 | 返回格式(csv/json/xml),默认csv |
返回数据格式:CSV
errcode,纬度,经度,精度半径,地址
errcode
0: 成功
10000: 参数错误
10001: 无查询结果
示例:
0,”北京市朝阳区亚运村街道北四环中路入口(东向);北四环中路辅路与北辰东路路口东北49米”
4. 本地命令行单次查询程序
运行single_query程序进行单次基站编码/WIFI BSSID查询。
4.1 单次基站查询
基站查询参数为
$ bin/single_query mcc mnc lac ci
返回数据为TAB分隔的单行字符串,其中字段为
字段名称 | 类型 | 取值范围 | 说明 |
---|---|---|---|
mcc | 整型 | 0-999 | Mobile Country Code 移动设备国家代码 |
mnc | 整型 | 0-20000 | Mobile Network Code 移动设备网络代码或SID(CDMA) |
lac | 整型 | 0-65535 | LAC(GSM/WCDMA)或TAC(LTE)或NID(CDMA) |
ci | 整型 | 0-268435455 | Cell Identifier或BID(CDMA) |
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号;利泽东街与屏翠东路路口东189米 北京市 [] 朝阳区 望京开发街道
4.2 单次WIFI查询
WIFI查询参数为
$ bin/single_query aa:bb:cc:dd:ee:ff
返回数据为TAB分隔的单行字符串,其中字段为
字段名称 | 类型 | 取值范围 | 说明 |
---|---|---|---|
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 北京市海淀区紫竹院街道敬宾楼2号楼;北三环西路辅路与北三环西路三义庙路出口路口东541米 北京市 [] 海淀区 紫竹院街道
5. 开发程序库API说明
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:失败,无数据;1:成功。
参数说明同4.1。
extern int wifi_query(unsigned long long bssid, double *lat, double *lon, int *radius, int *date);
输入参数:WIFI热点BSSID的数值表示 bssid。
输出参数:纬度lat, 经度lon,覆盖半径radius,更新日期date。
返回值:0:失败,无数据;1:成功。
参数说明同4.2。