转自:http://lainzy.oicp.net/post/121.html
我终于搞清楚这个问题了,大家使用谷歌地图手机版、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进制来查询的。
毕竟这个问题困扰了自己那么久,还时常找接口安慰别人“反正不影响用嘛~”,现如今自己找到了问题的原因,也算是解开了一个心结。
可能有的朋友早就知道了其中的原因,只是我孤陋寡闻了,那实在不好意思,毕竟解答了自己心中的困惑,与还不知道的朋友互相分享一下吧。
可能有的朋友早就知道了其中的原因,只是我孤陋寡闻了,那实在不好意思,毕竟解答了自己心中的困惑,与还不知道的朋友互相分享一下吧。