2012-04-26 12 views
28

Po pierwsze, próbuję zrobić całą tę katastrofę w języku C# (.net 4), więc jeśli wymyślisz jakiś kod, który mi pomoże, to będzie to docenione, ale naprawdę wszystko mogłoby pomóc w tym momencie.Jak prawidłowo triangulować wieże komórek GSM, aby uzyskać lokalizację?

Mam sytuację, w której mam urządzenie, które może uzyskać informacje o komórce GSM (nawiasem mówiąc za pomocą polecenia AT+KCELL), więc mam zbiór wartości o wieżach komórkowych (każdy ma LAC, MCC, MNC, identyfikator komórki, sygnał Siła i pierwsza zmiana czasu). Myślę więc, że jestem w dobrym miejscu, aby znaleźć współrzędne długości i szerokości geograficznej (aczkolwiek niedokładne, ale, no cóż). To tutaj docieram do pomocy, ponieważ teraz mój mały mózg jest zdezorientowany ...

Widzę różne usługi, które zapewniają rozdzielczość kodu komórki (Google, Open Cell ID, itp.) I biorą LAC, MCC itp. argumenty i zwróć współrzędne. Sądzę, że to, co powrócą, będzie więc współrzędną danej wieży, którą mijam. Tak więc w moim przypadku mógłbym wysłać wszystkie LAC itp., Które posiadam, i odzyskać zbiór długości i szerokości geograficznych. Świetnie, ale to nie jest miejsce, w którym znajduje się moje urządzenie. Teraz myślę, że muszę przeprowadzić pewną triangulację i to właśnie powoduje, że mój brak wiedzy rani mnie.

Więc mam rację do tej pory? Zakładając, że jestem, w jaki sposób wykonać te obliczenia (czy jest coś, co powie mi, co zrobić z tymi wszystkimi liczbami lub, jeszcze lepiej, jakąś biblioteką open source, do której mogę się odwołać i nakarmić wszystkie te rzeczy, aby uzyskać coś sensownego) ?

Zakładam, że będę musiał użyć wyprzedzenia taktowania, aby ustalić jakąś przybliżoną odległość od wieży komórki (może używając siły sygnału), ale co mam zrobić? Jak możesz stwierdzić - jestem daleko stąd!

Na przykład, to jest coś, że mogę wrócić z wyżej wymienionych komend 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 

łamiąc go i analizowania go dostanę (mam nadzieję, analizowania tego prawa - jest szansa istnieje błąd w moim analizowania rutyny oczywiście, ale wygląda na rozsądne):

Number of cells: 5 

komórkowych 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 

Celi 2

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

Celi 3

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

Celi 4

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

Celi 5

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

Więc z tymi wszystkimi informacjami, jak znaleźć, w najbardziej dokładny sposób, gdzie faktycznie jestem?

+0

jakąkolwiek szansę delegowania dane, które otrzymujesz ... co najmniej 50%, ponieważ jestem ciekawy ;-) – gordatron

+0

Myślę, że mogą istnieć różne techniki robienia tego zależne od dokładnie jakie dane masz. Mogę podać odpowiedź, ale najlepiej byłoby zebrać wszystkie dane, które można uzyskać, i zamieścić pytanie na stronie: http: //math.stackexchange.com/, chyba że jest ktoś, kto zrobił to wcześniej i jest gotowy do udostępnienia. konkretna informacja – gordatron

+0

@gordatron Dodałem przykład - dziękuję za spojrzenie na moje pytanie – kmp

Odpowiedz

34

Mogę ci pomóc z odrobiną teorii.

Triangulacja polega na znalezieniu punktu przecięcia 3 okręgów.

Każda wieża mobilna jest środkiem okręgu. Rozmiar okręgu jest zależny od siły sygnału tej wieży.

Miejsce, w którym nakładają się 3 okręgi, gdzie znajduje się użytkownik.

Można zrobić bardzo prosty triangulacji następująco:

 
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) 

Oto przykład pracę przy użyciu wartości z pytaniem:

 

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

Dziękuję za odpowiedź - od tego czasu uwzględniam powyżej wartości długości i szerokości geograficznej (zgodnie z usługą Google cell resolution resolution) dla każdej komórki, więc podłączyłem trzy z największą siłą sygnału do obliczeń, które podałeś . Pojawia się w Afryce (x: 16.0764901666667 y: 4.75214030350877), ale wszystkie komórki znajdują się w Austrii, więc nie wydaje się to właściwe - czy istnieje jakaś literówka? – kmp

+0

Przepraszam, myślę, że moja formuła jest trochę zła, daj mi 5. –

+0

Tak, nie powinienem był dzielić przez 3. Sprawdź, czy to jest lepsze. Zaktualizowałem pytanie za pomocą przykładu przy użyciu twoich wartości. Teraz jest w Austrii :-) –

3

To nie jest odpowiedź naprawdę jednak jego rozrusznik i mogę dodać jeszcze więcej:

Identyfikatory komórek są opublikowane, wydaje się:

http://openbmap.org/

znalazłem ten link z tej strony wiki, który posiada linki do innych źródeł danych Cell ID: http://en.wikipedia.org/wiki/Cell_ID)

zobaczyć dno stronę to link do danych Cell ID:

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

również uważam, że ten film youtube gdzie faceci są zabawy z niektórych aplikacji, które mają lokalizacje masztów telefonii komórkowej wydaje się:

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

ewentualnie między identyfikatorami komórki oraz siły sygnału można zgadnąć ..

ale AFAIK do ogólnego triangulacji trzeba znać dokładną lokalizację przynajmniej trzema wieżami i dokładnej odległości od nich (może być zgrubnym odcinkiem o sile sygnału, ale może być po prostu zbyt dokładny).

wydaje się wikipedia mówi jej zrobić w ten sposób .. użyć kombinacji z których komórka jesteś w najbliższą wieżę, a sygnał mocne, aby uzyskać lokalizację:

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

Powiązane problemy