sobota, marca 20, 2010

Dalsze śledzenie geolokalizacji Google'a :-)

No to przejrzałem tak z grubsza źródła Google Gears w kawałku dotyczącym geolokalizacji i jest tak jak myślałem, a nawet lepiej ;-)
Do serwisu ustalającego pozycję przesyłane są SSID, MAC, siła sygnału [te 3, tak na Win32 jak i na OSX], na OSX wysyłane są jeszcze Age [cokolwiek to w przypadku sygnału WiFi oznacza ;-)], poziom mocy sygnału do szumu i kanał. W Win32 Google Gears nie przesyła tych 3 pozostałych rzeczy co tak ładnie opisano w kodzie:
  // TODO(steveblock): Is it possible to get the following?
//access_point_data->signal_to_noise
//access_point_data->age
//access_point_data->channel

Gdy dostępne są dane o sieci komórkowej [z tego co mi się wydaje brane są pod uwagę tylko w Androidzie, ale głowy nie dam] to przesyłane są namiary wież/BTSów, czyli cell_id, kod lokacji, kod operatora, kod mobile_country_code i moc sygnału, czyli robią to co podobno robić chciał kiedyś Siemens. Do tego wysyłana jest informacja o tym jaki jest rodzaj sieci.
Gdy dostępne są dane o WiFi to tak jak pisałem wcześniej wysyłane są dla każdej sieci WiFi dane takie jak: wiek [age], kanał, MAC, moc sygnału w dBm'ach, poziom sygnału do szumu też w dBm'ach i SSID.
Tutaj link do kodu testu, w którym widać co jest przesyłane.

Oczywiście to, że te dane są przesyłane, nie oznacza wcale, że są brane pod uwagę w wyliczaniu pozycji, do tego trzeba by było poeksperymentować z wysyłaniem czegoś do tego serwisu :-) Ale na to wskazuje wędrowanie mojej pozycji o czym pisałem poprzednio.

Dane wysyła się z tego co widać w kodzie jako JSONa, ale tu też głowy nie dam.

Co do obliczania odległości od źródła mocy ;-) to stawiałbym na jakieś wzory empiryczne bo trzeba brać pod uwagę budynki...... choć możliwe, że mają "po prostu" mapę natężeń i na niej bazują, ale to raczej mało prawdopodobne, choć kto wie. Sam kiedyś "rysowałem" mapę zasięgów radia przy pomocy danych o pozycjach z GPSa ;-) [auta nadawały swoją pozycję przez GPS, ale w taki sposób, że pozycja była przesyłana tylko i wyłącznie wtedy gdy radio potrafiło się połączyć z bazą, no i uzyskana mapka pozwalała "teoretycznie" na ustalenie gdzie radio działa, a gdzie nie] [W ramach wyjaśnienia, to były karetki pogotowia i to była jedna z pierwszych wersji systemu lokalizacji pojazdów].
Gdyby wyliczać teoretycznie to też się da, ale mało skutecznie, np. przy pomocy tego wzoru:

r=sqrt(P*S/(4*pi*I))


gdzie P to moc sygnału, równa zwykle 100 mW, S to powierzchnia anteny, a I to moc odebrana.
Działa to tak, że znając moc docierającą i powierzchnię anteny możemy ocenić moc na m2, a że sygnał rozchodzi się kuliście [nie do końca prawda, ale najłatwiej tak liczyć, no i konwencja nam pozwala tak liczyć, więcej nie umiem powiedzieć bo ostatni raz zajmowałem się tym z 4 lata temu, a i to tylko tak przy okazji ;-)] więc możemy policzyć promień tej kuli bo moc na jej powierzchni musi być równa mocy nadajnika.......
Głowy nie dam, ale mogę źle liczyć ;-) Ważne, że się da.


Podobne postybeta
Geolokalizacja c.d. :-)
Lokalizowanie Access Pointów...
Śledzimy geolokalizację ;-)
Komórka - w końcu to taki mały komputerek ;-)
Jak działają Google Glasses?