基站WIFI位置数据库查询软件说明文档

本文介绍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。