如何正确地对 GSM 蜂窝塔进行三角测量以获取位置?

Posted

技术标签:

【中文标题】如何正确地对 GSM 蜂窝塔进行三角测量以获取位置?【英文标题】:How to properly triangulate GSM cell towers to get a location? 【发布时间】:2012-05-06 23:26:21 【问题描述】:

首先,我试图在 c# (.net 4) 中解决所有这些灾难,所以如果你想出一些代码来帮助我,我将不胜感激,但此时真的任何事情都会有所帮助。

我有一个设备只能获取 GSM 小区信息(顺便通过AT+KCELL 命令),所以我有一组关于小区塔的值(每个都有 LAC、MCC、MNC、小区 ID、信号强度和第一个时间提前)。因此,我认为我处于一个能够提出某种经度和纬度坐标的好地方(尽管不准确,但是,嗯)。这是我寻求帮助的地方,因为现在我的小脑袋很困惑......

我可以看到各种提供单元代码解析的服务(Google、Open Cell ID 等),它们将 LAC、MCC 等作为参数并返回坐标。因此,我认为他们返回的内容将是我经过的给定塔的坐标。因此,在我的情况下,我可以发送我拥有的所有 LAC 等并取回经度和纬度的集合。太棒了,但这不是我的设备所在的地方。现在我想我需要做一些三角测量,这就是我缺乏知识伤害我的地方。

那么到目前为止我是对的吗?假设我是,我该如何执行这个计算(那里有什么东西可以告诉我如何处理所有这些数字,或者更好的是,我可以参考一些开源库并将所有这些东西输入以获得一些明智的东西) ?

我假设我需要使用时间提前来计算出与手机信号塔的大致距离(可能以某种方式使用信号强度),但我该怎么办?正如你所知道的 - 我在这里超出了我的深度!

例如,这是我可能从前面提到的 AT 命令得到的东西:

5,74,33,32f210,157e,8101,50,0,79,3,32f210,157e,80f7,37,64,5,32f210,157e,810b,37,55,32,32f210,157e,9d3,27,41,33,32f210,157e,edf8,15

分解并解析我会得到的(我希望我能正确解析 - 当然我的解析例程中可能存在错误,但它看起来很合理):

Number of cells: 5

单元格 1

LAC: 5502
MNC: 1
MCC: 232
Cell ID: 33025
Signal: 80
ARFCN: 74
BSIC: 33
Timing advance: 0
Longitude: 14.2565389
Latitude: 48.2248439

细胞 2

LAC: 5502
MNC: 1
MCC: 232
Cell ID: 33015
Signal: 55
ARFCN: 79
BSIC: 3
Longitude: 14.2637736
Latitude: 48.2331576

细胞 3

LAC: 5502
MNC: 1
MCC: 232
Cell ID: 33035
Signal: 55
ARFCN: 64
BSIC: 5
Longitude: 14.2488966
Latitude: 48.232513

细胞 4

LAC: 5502
MNC: 1
MCC: 232
Cell ID: 2515
Signal: 39
ARFCN: 55
BSIC: 32
Longitude: 14.2488163
Latitude: 48.2277972

细胞 5

LAC: 5502
MNC: 1
MCC: 232
Cell ID: 60920
Signal: 21
ARFCN: 41
BSIC: 33
Longitude: 14.2647612
Latitude: 48.2299558

那么,有了所有这些信息,我该如何以最准确的方式找到我的实际位置?

【问题讨论】:

任何机会发布您获得的数据.. 至少 50% 因为我很好奇 ;-) 我认为可能有不同的技术来执行此操作,具体取决于您拥有的数据。我可以提出一个答案,但最好收集所有你能得到的数据并在math.stackexchange.com 上发布一个问题,除非有人以前这样做过并且愿意分享具体信息 有谁知道支持此功能的 umts USB 设备?我有一个来自huwei,一个来自alcatel,但都不支持AT+KCELL @ppumkin,已经有一段时间了,但我认为这是一个 Sagemcom HiLo V2 模块 - 信息在这里:support.sagemcom.com/site/livret/… 没关系。我在看 2010 年的文档,2014 年的文档有一个供应商特定的命令“AT+CNETSCAN”,它为您提供所有没有 sim 卡的单元或连接网络的连接单元。 9GBP 真是太棒了:) 【参考方案1】:

我可以帮助你一些理论。

三角测量基本上是找到3个圆的交点。

每个移动塔都是一个圆的中心。圆圈的大小与该塔的信号强度有关。

3个圆圈重叠的地方就是用户所在的地方。

您可以按如下方式进行一些非常基本的三角测量:

3 塔在 tx1,ty1 TX2,TY2 tx3,ty3 信号强度为 s1、s2、s3 我们计算每个信号的权重。本质上是一个从 0 到 1 的数字,每个塔的权重总和为 1。 加权信号 w1、w2、w3 其中: w1 = s1/(s1+s2+s3) w2 = s2/(s1+s2+s3) w3 = s3/(s1+s2+s3) 用户将在 x:(w1 * tx1 + w2 * tx2+ w3 * tx3) y: (w1 * ty1 + w2 * ty2+ w3 * ty3)

这是一个使用您问题中的值的工作示例:

s1 = 80 s2 = 55 s3 = 55 s4 = 55 s5 = 21 w1 = 80 / ( 80 + 55 + 55 + 55 + 21 ) w2 = 55 / ( 80 + 55 + 55 + 55 + 21 ) w3 = 55 / ( 80 + 55 + 55 + 55 + 21 ) w4 = 55 / ( 80 + 55 + 55 + 55 + 21 ) w5 = 21 / ( 80 + 55 + 55 + 55 + 21 ) w1 = 0.3007519 w2 = 0.2067669 w3 = 0.2067669 w4 = 0.2067669 w5 = 0.0789474 1.经度:14.2565389 1. 纬度:48.2248439 2.经度:14.2637736 2. 纬度:48.2331576 3.经度:14.2488966 3. 纬度:48.232513 4.经度:14.2488163 4. 纬度:48.2277972 5.经度:14.2647612 5. 纬度:48.2299558 位置经度 = 14.2565389 * 0.3007519 + 14.2637736 * 0.2067669 + 14.2488966 * 0.2067669 + 14.2488163 * 0.2067669 + 14.2647612 * 0.0789474 位置纬度:= 48.2248439 * 0.3007519 + 48.2331576 * 0.2067669 + 48.232513 * 0.2067669 + 48.2277972 * 0.2067669 + 48.2299558 * 0.0789474 结果经度:14.255507 结果纬度:48.2291628

【讨论】:

感谢您的回答 - 我已将每个单元格的经度和纬度值(根据 Google 单元代码解析服务)包含在上方,因此我将信号强度最大的三个插入到您的计算中给。它提出了在非洲的位置(x:16.0764901666667 y:4.75214030350877),但所有单元都位于奥地利,所以这似乎不太正确 - 那里有没有错字? 是的,我不应该除以 3。看看这是否更好。我用你的价值观的例子更新了这个问题。现在在奥地利:-) ...假设所有塔都具有相同的强度、高度、干扰等。刚刚知道如何获得误差半径,您可以使用交替选择塔并寻找相似之处/三角点的差异。也在一段时间内(在几秒钟内重复上述几次以减轻错误的强度峰值/下降) 信号通常是以 dBm 为单位的负值。因此,绝对值越低,信号越好,信号塔越近。在这个答案中,这意味着具有较低绝对值的信号的权重必须更大。 这个公式是错误的。让我们简化为整数。我们有 3 个单元格:a(1,2)、b(2,3) 和 c(2,1)。我们的电话在 (2,2)。因此,所有 3 个单元的信号均为 1。所以因子 w1,w2,w3 都是 1/3 X=(1/3 + 2/3 + 2/3) = 5/3 (应该是 6/2=2) Y=(2/3 + 3/3 + 1/3) = 6/3 = 2(这没关系)还要注意,塔周围的圆圈是用于全向天线的,但实际上这种天线很少使用,它们相当扇形(像一个馅饼)。在扇区内,每个方向的功率都不相同,它在中间,两端可能会下降到 3 dB 或更多。【参考方案2】:

这不是一个真正的答案,但它是一个开端,我可能会添加更多:

单元格 ID 似乎已发布:

http://openbmap.org/

我从这个 wiki 页面找到了这个链接,该链接包含指向其他单元格 id 数据源的链接:http://en.wikipedia.org/wiki/Cell_ID)

查看页面底部是单元格 id 数据的链接:

http://openbmap.org/latest/cellular/raw/input_raw.zip

我还发现了这个 youtube 视频,其中一个人正在玩一些似乎有手机信号塔位置的应用程序:

http://www.youtube.com/watch?v=CYvVN5dJD7A

可能在小区 ID 和信号强度之间,您可以做出猜测..

但是对于一般三角测量,您需要知道至少三座塔的确切位置以及与它们的确切距离(这可能是一个粗略的距离与信号强度,但它可能太不准确了)。

***似乎在说它是以这种方式完成的......使用您所在的单元格、最近的塔和信号强度的组合来获取您的位置:

http://en.wikipedia.org/wiki/Mobile_phone_tracking

【讨论】:

以上是关于如何正确地对 GSM 蜂窝塔进行三角测量以获取位置?的主要内容,如果未能解决你的问题,请参考以下文章

当前位置的 iPhone 蜂窝三角测量

具有状态“靠近”的任务者和几个具有几乎相同数量的蜂窝塔

基于gps或gprs(ip)的地理定位

移动地理定位技术

iOS:是不是可以要求核心位置框架仅使用蜂窝塔或仅使用 WiFi 或使用 GPS 天线获取位置?

Google 地图 (Android) 中的位置更新率