2012-04-26 10 views
28

Zuerst versuche ich, all diese Katastrophe in C# (. Net 4) zu tun, also, wenn Sie mit etwas Code kommen, um mir zu helfen, würde geschätzt werden, aber wirklich würde alles an diesem Punkt helfen.Wie man GSM-Mobilfunkmasten richtig trianguliert, um einen Standort zu erhalten?

Ich habe eine Situation, wo ich ein Gerät habe, das nur GSM Cell Informationen bekommen kann (übrigens über den AT+KCELL Befehl), also habe ich eine Sammlung von Werten über Mobilfunkmasten (jede hat LAC, MCC, MNC, Cell ID, Signal Stärke und der erste Timing Advance). Ich denke, deshalb bin ich an einem guten Ort, um eine Art Längen- und Breitengradkoordinate zu finden (wenn auch ungenau, aber naja). Dies ist, wo ich um Hilfe Hilfe, weil jetzt mein kleines Gehirn ist verwirrt ...

Ich kann verschiedene Dienste, die Zelle Code-Auflösung (Google, Open Cell ID, etc.) und sie nehmen LAC, MCC usw. als sehen Argumente und geben eine Koordinate zurück. Ich gehe davon aus, dass das, was sie zurückgeben, daher die Koordinate des gegebenen Turms sein würde, den ich durchlasse. Also könnte ich in meinem Fall alle LACs usw., die ich habe, abschicken und eine Sammlung von Längen- und Breitengraden zurückbekommen. Brilliant, aber das ist nicht, wo mein Gerät ist. Jetzt denke ich, dass ich eine Art von Triangulation machen muss und das ist, wo mein Mangel an Wissen mich verletzt.

Also bin ich soweit richtig? Vorausgesetzt, ich bin, wie führe ich diese Berechnung durch (gibt es da draußen etwas, das mir sagen wird, was ich mit all diesen Zahlen anfangen soll oder, noch besser, irgendeine Open-Source-Bibliothek, auf die ich zurückgreifen kann, um etwas Sinnvolles zu bekommen)? ?

Ich gehe davon aus, dass ich den Timing Advance verwenden müsste, um eine ungefähre Entfernung von einem Mobilfunkmast herauszufinden (vielleicht mit der Signalstärke irgendwie), aber was muss ich tun? Wie du sehen kannst - ich bin hier weit von meiner Tiefe entfernt!

Zum Beispiel ist dies etwas, was ich von dem oben erwähnten zurück AT-Befehl könnte:

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 

es bis zu brechen und es Parsen Ich würde (ich hoffe, dass ich das richtig analysieren - gibt es eine Chance ist um einen Fehler in meinem Parsingroutine natürlich, aber es sieht vernünftig):

Number of cells: 5 

Zelle 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 

Zelle 2

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

Zelle 3

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

Zelle 4

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

Zelle 5

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

Also mit all diesen Informationen, wie finde ich, in der genauesten Weise, wo ich eigentlich bin?

+0

jede Chance der Entsendung die daten die du bekommst .. mindestens 50% weil ich neugierig bin ;-) – gordatron

+0

Ich denke das es verschiedene Techniken dafür geben kann abhängig davon welche Daten du genau hast. Ich könnte eine Antwort schreiben, aber es ist vielleicht am besten, alle Daten zu sammeln, die Sie bekommen können, und eine Frage zu stellen: http://math.stackexchange.com/, es sei denn, es gibt jemanden, der das schon einmal getan hat und für die Freigabe bereit ist die spezifischen Informationen – gordatron

+0

@gordatron Ich habe ein Beispiel hinzugefügt - danke für das Betrachten meiner Frage – kmp

Antwort

34

Ich kann Ihnen mit ein bisschen Theorie helfen.

Triangulation ist im Grunde der Schnittpunkt von 3 Kreisen.

Jeder mobile Turm ist das Zentrum eines Kreises. Die Größe des Kreises ist relativ zur Signalstärke dieses Turms.

Der Ort, an dem sich die 3 Kreise überlappen, ist der Ort, an dem sich der Benutzer befindet.

Sie können einige sehr einfache Triangulation wie folgt vorgehen:

 
3 Towers at 
tx1,ty1 
tx2,ty2 
tx3,ty3 

With signal strengths s1, s2, s3 

We calculate the weight of each signal. Essentially a number from 0 to 1 for each tower where the sum of the weights adds up to 1. 

Weighted signal w1, w2, w3 where: 
w1 = s1/(s1+s2+s3) 
w2 = s2/(s1+s2+s3) 
w3 = s3/(s1+s2+s3) 


User will be at 
x: (w1 * tx1 + w2 * tx2+ w3 * tx3) 
y: (w1 * ty1 + w2 * ty2+ w3 * ty3) 

Hier ist ein funktionierendes Beispiel die Werte aus Ihrer Frage mit:

 

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. Longitude: 14.2565389 
1. Latitude: 48.2248439 

2. Longitude: 14.2637736 
2. Latitude: 48.2331576 

3. Longitude: 14.2488966 
3. Latitude: 48.232513 

4. Longitude: 14.2488163 
4. Latitude: 48.2277972 


5. Longitude: 14.2647612 
5. Latitude: 48.2299558 


Location Longitude = 
14.2565389 * 0.3007519 + 
14.2637736 * 0.2067669 + 
14.2488966 * 0.2067669 + 
14.2488163 * 0.2067669 + 
14.2647612 * 0.0789474 

Location Latitude: = 
48.2248439 * 0.3007519 + 
48.2331576 * 0.2067669 + 
48.232513 * 0.2067669 + 
48.2277972 * 0.2067669 + 
48.2299558 * 0.0789474 

Result Longitude: 14.255507 
Result Latitude: 48.2291628 

+1

Danke für die Antwort - Ich habe seit über den Längen-und Breitengrad Werte (nach dem Google Cellcode Resolution Service) für jede der Zellen enthalten, so steckte ich die drei mit der größten Signalstärke in die Berechnungen, die Sie geben . Es kommt mit einem Standort in Afrika (x: 16.0764901666667 y: 4.75214030350877), aber alle Zellen sind in Österreich, so dass es nicht ganz richtig scheint - keine Chance, dass es einen Tippfehler gibt? – kmp

+0

Sorry, ich denke, meine Formel ist ein bisschen falsch, geben Sie mir 5. –

+0

Ja, ich hätte nicht durch 3 geteilt. Sehen Sie, ob das besser ist. Ich habe die Frage anhand Ihrer Werte anhand eines Beispiels aktualisiert. Es ist jetzt in Österreich :-) –

3

Dies ist keine Antwort wirklich, aber es ist ein Starter und ich könnte mehr, um es hinzuzufügen:

Die Zelle-IDs veröffentlicht werden es scheint:

http://openbmap.org/

fand ich diesen Link von dieser Wiki-Seite, die Links zu anderen Zellen-ID-Datenquellen hat: http://en.wikipedia.org/wiki/Cell_ID)

die unten auf der Seite des sehen, ist ein Link auf die Zellen-ID-Daten:

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

auch fand ich dieses youTube-Video, wo ein Jungs mit einigen Anwendungen spielt um die Zelle Turm Standorte haben es scheint:

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

möglicherweise zwischen den Zellen-IDs und Signalstärke Sie eine Vermutung machen ..

aber AFAIK für allgemeine Triangulation müssen Sie von ihnen die genaue Lage von mindestens drei Türme und Ihre genaue Entfernung kennen (dies könnte eine grobe Entfernung mit Signalstärke sein, aber es kann auch zu genau sein).

es scheint, wie wikipedia seine auf diese Weise getan zu sagen .. verwenden eine Kombination aus welcher Zelle Sie sich befinden, die am nächsten Turm und Signalstärken Ihren Standort zu erhalten:

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