基站位置数据库V2说明文档

本文介绍基站位置数据库V2的安装、数据库格式、查询方法以及其它常见问题。

1. 数据库说明

本产品以数据库的形式记录中国大陆地区的移动通信基站编码和与之对应的经纬度坐标以及中文描述的地址信息,用户可以使用本数据库通过基站编码查询该基站所处的位置。

2. 数据库安装

2.1 导入MySQL数据库

本产品推荐使用MySQL作为基础数据库软件,通过提供的MySQL导出脚本文件可以直接导入MySQL数据库,无需手动建表、建索引等操作。

2.1.1 创建数据库

进入MySQL Shell,运行以下命令创建名为cellinfo_v2的数据库:

CREATE DATABASE cellinfo_v2 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

2.1.2 导入数据

在操作系统命令行下(Windows CMD或Linux Shell)运行以下命令,从名为cellinfo_v2.sql的MySQL数据库导出文件恢复数据库:

mysql -u [user] -p [password] cellinfo < cellinfo_v2.sql

对于全国数据,整个导入过程大约需要1-2个小时。
注意不要使用navicat等数据库管理软件导入.sql文件,过程会非常缓慢。

2.2 导入MS SQL Server数据库

本产品提供的文本格式文件(Tab分隔字段)可以导入MS SQL Server数据库。

2.2.1 转换数据文件编码(UTF-8 -> GBK)

下载编码转换工具
将压缩包解压,并将文本格式数据文件重命名为cellinfo_v2.txt和解压文件放在同一目录下,如下图:

双击运行convert.bat,等待运行完成。对于全国数据大于需要10-20分钟。

2.2.2 启动SQL SERVER IMPORT AND EXPORT WIZARD

2.2.3 选择数据源为FLAT FILE SOURCE并选择数据文件

2.2.4 修改字段名称和类型

2.2.5 导入数据

3. 数据库格式

3.1 建表语句

CREATE TABLE `cellinfo_v2` (
  `mcc` int(11) DEFAULT NULL,
  `mnc` int(11) NOT NULL DEFAULT '0',
  `lac` int(11) NOT NULL DEFAULT '0',
  `ci` int(11) NOT NULL DEFAULT '0',
  `lat` float(11,8) DEFAULT NULL,
  `lon` float(11,8) DEFAULT NULL,
  `acc` int(11) DEFAULT NULL,
  `date` int(11) DEFAULT NULL,
  `validity` float(3,2) DEFAULT '0.10',
  `addr` varchar(255) DEFAULT NULL,
  `province` varchar(255) DEFAULT NULL,
  `city` varchar(255) DEFAULT NULL,
  `district` varchar(255) DEFAULT NULL,
  `township` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`mnc`,`lac`,`ci`)
) DEFAULT CHARSET=utf8;

3.2 字段说明

字段名称 类型 取值范围 说明
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 字符串 镇/乡/街道

4. 常见问题

4.1 地图显示偏移大

请首先检查国内地图使用的经纬度格式。数据库中的经纬度格式为WGS84,如果将坐标在国内地图上显示,需要将经纬度转换为GCJ02或BD09坐标。
如果经纬度格式正确但基站坐标仍有1KM以上的偏移,请将基站编码发送给我们做进一步验证。

4.2 MNC字段有一些大于10000的数据,是否是无效数据?

数据库中的MNC字段在对应基站是CDMA网络时保存的是CDMA网络的SID,其取值范围是10000-20000,此时并不是对应运营商编码。

4.3 如何查询电信CDMA基站?

查询电信CDMA基站时必须指定SID、NID、BID三个基站编码,缺一不可。使用其它参数无法定位。

4.4 3G基站(WCDMA/TD-SCDMA)查不到

数据库中3G基站的CI字段保存的是Utran Cell ID(长CI),如果你的设备(尤其是在一些旧app上)获取到的3G基站的Cell ID小于65536(短CI),那很大概率是无法直接在数据库中查到的。此时可以通过仅匹配CI低16位的方法查询,比如设备取得的3G基站编码为MNC=1 LAC=40981 CI=28104,此时可以通过SQL语句

SELECT * from cellinfo_v2 where mnc=1 and lac=40981 and ci%65536=28104;

来查询。

4.5 4G基站(LTE)只能获取到EnodeB ID和CELLID,如何查询?

对于LTE基站,数据库中保存的是ECI(长ID),而ECI是由EnodeB ID或CELLID组合而成。如果你的设备只能取到EnodeB ID和CELLID,此时需要将这两个参数计算成ECI再在数据库中查询。计算公式为:

ECI = EnodeBID * 256 + CELLID

注意此时查询时TAC参数缺失,查询结果可能不唯一。

5. 其它问题

如果此文档没有解决您的问题,请随时联系service@cellocation.com,QQ 3372218865或致电010-87923259,我们将及时回答数据相关的问题并完善此文档。