我终于搞清楚这个问题了,大家使用谷歌地图手机版、MobileTrack以及网优用的FieldTest获取到的WCDMA基站Cellid为什么不是大家手头的CellTrack91或基站表里的数字了。。。这个问题说起来非常的囧,以前我就知道有这个问题,但我从来没有深究过,因为反正不影响我使用嘛。但昨晚睡觉前躺在床上无聊,打开FieldTest研究白天附近基站掉线问题,突然发现了WCDMA基站Cellid的编号规则…………

 
以前2G时,大家用基站软件,获取到的LAC和CELL都是16进制的4位编号,比如我这里联通2G基站是:
LAC:1E8C
CELL:335F
他们换算过来就是LAC=7820,CELL=13511,很多基站软件会自动换算成10进制展现给大家。
OK,用这个参数去Google查询,就可以得到返回的经纬度了。
然而到了WCDMA基站下,很多人从基站软件,比如CellTrack91(中文翻译叫“基站定位”或“基站信息”)上获取到的基站号是如下这样:
LAC:DC10
CELL:2A2C
换算过来LAC=56336,CELL=10796。问题就来了,用这个CELL和LAC根本无法从Google查询到任何经纬度数据,但通过FieldTest或谷歌地图以及MobileTrack可以获取到另一组WCDMA的LAC和CELL,他们分别是:LAC=56336,CELL=190130732。用这组数据去查,就可以直接查到经纬度数据了!
 
但,这究竟是为什么?!
在昨晚之前,这个问题一直就困扰着我,但因为平时不影响我找到我需要的基站,所以我并不深究这个问题,直到昨晚把CellTrack91得到的WCDMA基站16进制代码和FieldTest得到的基站16进制代码放到一起时……眶!!!原来就这么简单!!大家还是不明白吗?呵呵……我来复现我昨晚看到的现象……
CellTrack91得到的WCDMA基站:
LAC=DC10
CELL=2A2C
FieldTest得到的WCDMA基站:
LAC=DC10
CELL=B552A2C
……还是没看明白?再看看啊!
对!FieldTest获得的WCDMA基站是7位16进制代码!包括谷歌地图,MobileTrack在内的基站软件,在WCDMA网络下,都是去获取完整的7位16进制代码,然后转换为10进制给大家看。而我们的运营商工程部的哥们,他们建基站时,不知是图方便,还是另有其他原因,他们只记录最后4位16进制代码!而且很有名的基站软件CellTrack91和其他一些工具,他们可能是出于2G时代的习惯或其他原因,也只记录4位16进制代码并换算为10进制展现给大家!
 
于是,就出现了,大家手头的CellTrack91、基站表能一一对应,但基站表和谷歌以及Fieldtest无法对应的情况!因为根本没换算出同一个数字嘛!!~我昨晚发现这个问题时……真是囧的我呦……这么简单的问题……居然这么久才搞明白!!……
 
通过这个问题,大家应该明白,谷歌、MobileTrack确实是支持联通WCDMA基站定位的,但大家不能用基站表上的数字来本站查询地理位置,因为那个号码本来就不对。如果要查询WCDMA基站位置,还是要获取完整的7位16进制基站代码,再换算成10进制来查询的。
 
毕竟这个问题困扰了自己那么久,还时常找接口安慰别人“反正不影响用嘛~”,现如今自己找到了问题的原因,也算是解开了一个心结。
可能有的朋友早就知道了其中的原因,只是我孤陋寡闻了,那实在不好意思,毕竟解答了自己心中的困惑,与还不知道的朋友互相分享一下吧。

我终于搞清楚为什么谷歌地图获取到的联通3G基站与大家手头的基站表不同了的更多相关文章

  1. 用html5调取谷歌地图获取位置

    function getmap(){ if(!navigator.geolocation) throw "Geolocation not supported"; var image ...

  2. 谷歌地图 API 开发之获取坐标以及街道详情

    自己的项目中有获取当前点击的坐标经纬度或者获取当前街道的信息的需求.估计这个对于新手来说,还是比较麻烦的,因为从官网上找这个也并不是很好找,要找好久的,运气好的可能会一下子找到. 献上自己写的测试案例 ...

  3. 谷歌地图地理解析和反解析geocode.geocoder详解

    地址解析就是将地址(如:贵州省贵阳市)转换为地理坐标(如经度:106.71,纬度:26.57)的过程. 地理反解析和上面的过程相反是将地理坐标(如纬度:26.57,经度:106.71)转换为地址(中国 ...

  4. 基于谷歌地图的Dijkstra算法水路路径规划

    最终效果图如下: 还是图.邻接表,可以模拟出几个对象=>节点.边.路径.三个类分别如下: Node 节点: using System; using System.Collections.Gene ...

  5. 怎样基于谷歌地图的Server缓存公布Image Service服务

    怎样基于谷歌地图的Server缓存公布Image Service服务 第一步:下载地图数据 下载安装水经注万能地图下载器,启动时仅仅选择电子.谷歌(这里能够依据自己的须要选择).例如以下图所看到的. ...

  6. 在AngularJS中使用谷歌地图把当前位置显示出来

    如何使用谷歌地图把当前位置显示出来呢? --在html5中,为我们提供了navigator.geolocation.getCurrentPosition(f1, f2)函数,f1是定位成功调用的函数, ...

  7. 【Javascript Demo】谷歌地图简单实现(附遮罩层和弹出层实现)

    虽然百度地图实现了,但只是国内的,而且前几天貌似还出问题了,对于国际的只能用谷歌地图了,所以就简单研究了下,做了个差不多的. 基本步骤,谷歌地图API文档其实写的很清楚了,先获取API密钥,然后引用j ...

  8. 谷歌地图地理解析和反解析geocode.geocoder详解(转)

    谷歌地图地理解析和反解析geocode.geocoder详解 谷歌Geocoder服务 实例代码 地址解析就是将地址(如:贵州省贵阳市)转换为地理坐标(如经度:106.71,纬度:26.57)的过程. ...

  9. 终于搞定在VS2010中将CString转换为const char*

    最近碰到了CString 转 const char *的问题. 以前只要简单的一个强制转换就OK了,可现在是不行了,搜索了很多资料,终于搞定,主要是Unicode和ANSI的问题,只要做一个转换就可以 ...

随机推荐

  1. 从零搭建mongo分片集群的简洁方法

    一.目录 1.mongo路径,config数据路径,shard数据路径

  2. 【apache】yum 安装Apache(Centos 6.5)

    一.首先在系统上面查询一下是否已经安装了apache [Apache在linux系统里的名字是httpd] rpm    -qa    httpd 如果有返回的信息,则会显示已经安装的软件.如果没有则 ...

  3. /etc/rc.d/与/etc/rc.d/init.d的关系

    /etc/init.d指向/etc/rc.d/init.d目录 . 除了直接调用脚本外(如/etc/rc.d/init.d/xinetd),还可以用service命令来控制init.d目录下的服务如 ...

  4. ARM汇编程序基本知识

    ARM汇编程序基本知识 1.汇编程序的基本组成 ARM汇编语言程序中,程序是以程序段为单位组织代码的.段是相对独立的指令或者代码序列,拥有特定的名称.段的种类有代码段.数据段和通用段,代 码段的内容为 ...

  5. 读<jquery 权威指南>[4]-Ajax

    一.获取异步数据 jQuery可以从服务器异步获得静态数据. ①load() $.load(url,data,callback) url要加载的页面地址, data发送到服务器的数据key/value ...

  6. 求解,ASP.Net MVC Redirect 无法跳转问题

    ①JS代码 $.post("/Home/CheckLogin", { "username": $("#username").val(), & ...

  7. JavaScript 数组的创建

    数组定义:数组(array)是一种数据类型,它包含或者存储了编码的值,每个编码的值称作该数组的一个元素(element), 每个元素的编码被称作为下标(index). JavaScript一维数组创建 ...

  8. 002 C#学前入门

    2016-01-16 1..Net平台  .Net FrameWork框架.Net FrameWork框架提供了一个稳定的运行环境,:来保障我们.Net平台正常的运转 2.C#语言 c sharp编程 ...

  9. 利用ftp端口设置,浅谈windows防火墙之应用+ftp直接资源管理器登陆

    win服务器的版本是不错的.防火墙也比较能用.server-u 6.4则是比较稳定.兼容性好的的版本,所以很多人在用 1.服务器为了安全,一般开启windows高级防火墙,在网络连接处右键鼠标,有弹出 ...

  10. C#获取字符首字母

    ///<summary> /// 获取字符首字母 /// </summary> public static string GetPyChar(string c) { if (s ...