GSM 蜂窝塔位置和信息三角测量算法(类似于 OpenCellID / Skyhook / Google 的 MyLocation)
假设我有蜂窝塔的指纹数据库。 数据(包括经纬度CellID、信号强度等)是通过“wardrive”获得的,类似于OpenCellID.org。
我希望能够在没有 GPS 的情况下获取客户端手机的位置(类似于 OpenCellID / Skyhook Wireless/ Google 的“MyLocation”),它会向我发送有关它当前“看到”的手机信号塔的信息: 手机信号塔连接到,以及另外 6 个相邻的蜂窝塔(假设是 GSM)。
我阅读并在 Google 上搜索了很长时间,发现了一些有效的理论,例如使用 SQL 2008 Spatial 功能,或使用欧几里得算法,或马尔可夫模型。
然而,我缺乏一个实用的解决方案,最好是用 C# 或使用 SQL 2008 :)
位置计算将在服务器上完成,而不是在客户端手机上完成。手机的唯一任务是通过 HTTP/GPRS 向其连接的信号塔和其他邻近的手机信号塔发送信息。
任何意见都会受到赞赏,我读了很多书,但到目前为止还没有真正取得多大进展。
谢谢
assuming I have a Fingerprint DB of Cell towers.
The data (including Long. & Lat. CellID, signal strength, etc) is achieved by 'wardriving', similar to OpenCellID.org.
I would like to be able to get the location of the client mobile phone without GPS (similar to OpenCellID / Skyhook Wireless/ Google's 'MyLocation'), which sends me info on the Cell towers it "sees" at the moment: the Cell tower connected to, and another 6 neighboring cell towers (assuming GSM).
I have read and Googled it for a long time and came across several effective theories, such as using SQL 2008 Spatial capabilities, or using an euclidean algorithm, or Markov Model.
However, I am lacking a practical solution, preferably in C# or using SQL 2008 :)
The location calculation will be done on the server and not on the client mobile phone. the phone's single job is to send via HTTP/GPRS, the tower it's connected to and other neighboring cell towers.
Any input is appreciated, I have read so much and so far haven't really advanced much.
Thanx
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为什么不根据小区位置和信号强度进行简单的三角测量计算?
Why don't you do a plain triangulation calculation, based on cell position and signal strength?
您无法进行三角测量,因为手机仅扫描来自两个基站而不是三个基站的信号。此外,我不知道是否可以以某种方式访问两个站的数据,因为您必须处理低级 GSM/3G 协议。
通过使用新手机 SDK(Java、Android、iPhone、Symbian...)的 AT 命令或功能,您可以检索有关小区 id、lac、mnc、mcc、信号强度和定时提前的信息。
通过检查定时提前,您可以确定信号以光速传播时距基站的距离,但您无法确定确切的位置,只能确定“可能位置的圆”,因为您可以计算近似半径(近似,因为信号通常不直接传播 - 信号可以从附近的物体反射)。
如果您使用 .NET 这里是一个示例用于从手机上可访问的 cellID 和其他数据检索基站位置。希望有帮助。
You can't do triangulation as the phone scans just the signals from two base stations and not three. Furthermore I don't know whether it is possible to somehow access the data of both stations because you would have to deal with low-level GSM/3G protocols.
By using AT commands or functions of newer phones SDKs (Java, Android, iPhone, Symbian...) you can retrieve the informations about the cell id, lac, mnc, mcc, signal strength and timing advance.
By examining timing advance you can determine how much you are away from the base station as the signal travels with the speed of light but you can't determine the exact position, just the "circle of possible positions" as you calculate the approximate radius (approximate because it is not in general true that the signal travels directly - the signal can reflect from nearby objects).
If yo are working with .NET here is an example for retrieving base station location from cellID and other data that are accessible on your phone. Hope it helps.