31

まず第一に、私はこのすべての災害を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

では、これらすべての情報を使用して、実際にどこにいるのかを最も正確に見つけるにはどうすればよいでしょうか。

4

2 に答える 2

39

私は少し理論を手伝うことができます。

三角測量とは、基本的に3つの円の交点を見つけることです。

各モバイルタワーは円の中心です。円のサイズは、そのタワーの信号強度を基準にしています。

3つの円が重なる場所は、ユーザーがいる場所です。

次のように、いくつかの非常に基本的な三角測量を行うことができます。

3つの塔
 tx1、ty1
 tx2、ty2
 tx3、ty3

信号強度s1、s2、s3の場合

各信号の重みを計算します。基本的に、重みの合計が1になる各タワーの0から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

于 2012-04-26T10:11:26.260 に答える
4

これは実際には答えではありませんが、そのスターターであり、さらに追加する可能性があります。

セルIDが公開されているようです:

http://openbmap.org/

他のセルIDデータソースへのリンクがあるこのwikiページからこのリンクを見つけました:http://en.wikipedia.org/wiki/Cell_ID

ページの下部を参照してください。これは、セルIDデータへのリンクです。

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

また、私はこのユーチューブのビデオを見つけました。そこでは、みんながセルタワーの場所を持っているいくつかのアプリで遊んでいるようです:

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

おそらくセルIDと信号強度の間で推測できます。

ただし、一般的な三角測量の場合は、少なくとも3つのタワーの正確な位置と、それらからの正確な距離を知る必要があります(これは、信号強度の大まかな距離である可能性がありますが、正確すぎる可能性があります)。

ウィキペディアはこのように行われたと言っているようです。現在のセル、最も近いタワー、信号強度の組み合わせを使用して、現在地を取得します。

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

于 2012-04-26T10:23:37.373 に答える