Poziționarea fără GPS cum op, savepearlharbor
Acum, tot mai multe aplicații mobile sunt geozavisimymi. Unii oameni pur și simplu nu face sens, fără cunoștința locația utilizatorului, alții devin mai confortabil cu ea. Această așa-numitele servicii bazate pe locație (LBS): navigatoare, Foursquare, instagramy fotografii geoetichetate și chiar memento-uri de aplicații care declanșează o anumită locație specifică, cum ar fi aproape de birou sau magazin.
Pentru servicii și aplicații Yandex, ne-am creat propria noastră punerea în aplicare a metodei de determinare a locației fără GPS - Yandeks.Lokator. Se economisește timp și de a face aplicația noastră un pic mai inteligent. Navigator și hărți, și se elimină punctul de intrare inițial al traseului, chiar dacă sunt acoperite de parcare. Iar atunci când aleg un film într-un poster de film sau un produs în magazin mobil ajută să arate doar în cazul în care să-l găsiți în cartierul tău. Și, desigur, atunci când caută o cafenea și ATM - vă permite să vă arăt imediat următoare, chiar și atunci când sunteți în metrou.

Tehnologia ne-am deschis atâta timp cât un API gratuit. Astăzi vrem să-ți spun cum este aranjat.
De ce fără GPS și în alt mod
În lume există mai multe implementări ale unei astfel de metode geoopredeleniya combinate. Și se pare că prima întrebare cu care se confruntă toți dezvoltatorii - în cazul în care putem obține informații despre locația rețelelor Wi-Fi și turnuri de celule?
locații de rețea de bază
Dilema „pentru a cumpăra sau de a crea o“ în cele din urmă am ales aceasta din urmă. Principalul motiv - care cu propriile date și algoritmi sunt mult mai ușor de controlat calitatea rezultatului. În colectarea de informații ne-au ajutat utilizatorii Yandex.Maps mobile.
Persoana de a participa la acest nimic crowdsourcing speciale nu au nevoie - trebuie doar să utilizați aplicația. Pe măsură ce datele coordonatelor privind înconjurătoare rețelele Wi-Fi și stațiile GSM impersonale. Ei, practic, nu „cântărește“, și transferarea acestora de la baterie, respectiv, nu va sta.
Baza de date compilate și actualizate în mod regulat. Și aici ne confruntăm cu următoarea problemă.
„Mutarea“ rețele
Experiența arată că ID-urile turnurilor de telefonie mobilă sunt în continuă schimbare - un număr care a fost în centrul orașului, ieri, mâine poate fi pe margine. Se poate muta și Wi-Fi routere - împreună cu proprietarii lor. Și se pare că fiecare mișcare este necesară pentru a invalida o parte semnificativă a datelor.
Așa am reușit să rezolve problema în același timp cu mișcare și turnuri, și routere. Din utilizatorul este solicitat pentru a determina locația, împreună cu datele pe care rețeaua le poate vedea. În cazul în care lista de rețea este cea care a fost văzut în diferite părți ale orașului, algoritmul ia în considerare cât de mult din ea semnale acumulate în fiecare zonă și vârsta acestuia. Fiecare grup dens de semnale de la rețeaua Wi-Fi sau turn celular noi numim „nor“. Cele mai multe semnale în nor și ceea ce sunt în stare proaspătă, cu atât mai mult este demn de încredere. Răspunsul va fi, respectiv, cel mai mare și proaspăt. Un nor în care nici un semnal pe o lună, considerăm depășite - chiar dacă a existat un nor proaspătă a rețelei într-o altă zonă.
raza norului
Având în vedere că poziția este determinată cu aproximație, nu se poate demonstra punctul - este necesar pentru a desena un cerc (deoarece semnalul radio în absența zgomotului este distribuit uniform în toate direcțiile). Deși, dacă te uiți la semnalele reale de imagine, de cele mai multe ori este o elipsă. La urma urmei, cele mai multe dintre toate se bucura de Google Maps pentru automobiliști. Lor GPS-urme rămân pe drum, și de la gospodării și, în special, din semnalele de clădiri, practic, nu ajunge.
Răspunsul este extrem de precis, raza cercului trebuie să fie minim. Dacă tocmai ați tăiat în jurul circumferinței în jurul tuturor punctelor semnalează o anumită rețea, raza va fi prea mare. Aceasta a contribuit la reducerea mat. Statistici. Semnalele de densitate care fac obiectul unei distribuții normale, care se aplică în general trei Sigma. În vecinătatea razei cade 99,7% puncte.


Am decis să meargă mai departe și experimentul a luat un factor sigma care a redus raza maximă, dar a păstrat o precizie acceptabilă. Era posibil ca, pentru că, în cele mai multe cazuri, utilizatorul vede mai multe rețele. Aceasta este „deschis“ rata de reducere zonă este probabil să se suprapună cu alți nori.
semnale Neoblachnye
Din păcate, nu toate semnalele GPS activat de la utilizatori pur și simplu a pus împreună într-un nor. Sa constatat că, în cazul în care a pus pe harta toate semnalele unei singure rețele, în plus față de „elipsa“ pe ea va fi un punct și o linie. Este, prin urmare, semnale singulare foarte îndepărtate de cluster de semnale pe aceeași rețea, și foarte lungi GPS-piste (de exemplu, lanț de semnal GPS).
Semnale simple, nori mici și piese lungi pe care le considerăm „zgomot“. Atunci când primește un răspuns, nu a fost posibil pentru a localiza utilizatorul vede o singură rețea, pentru care sunt cunoscute numai acelor semnale. Noi credem că este mai potrivită decât a da greșit, conform estimărilor noastre, rezultatul.
În cazul în care datele au fost acumulat suficiente, a existat o altă problemă cu unirea tuturor semnalelor într-un singur nor. Ce se întâmplă este că semnalele de la turnul unul din oraș, de asemenea, a venit de la o alta. Ea ne-a ajutat în prezența unor identificatori de rețele GSM-cod de locație zonă - LAC (Locație Area Code). Deoarece turnul cu același cod ar trebui să fie în conformitate cu standardul să fie în jurul valorii, norii, care au fost „nu în orașul meu“ (de exemplu, printre norii cu un alt LAC), a fost Locator pentru a da o greutate subevaluate.
Îmbunătățirea preciziei determinării ...
... GSM-rețele
... pe Wi-Fi-rețele

Calitatea rezultată
În primul rând, câteva cuvinte despre modul în care evaluăm calitatea soluțiilor noastre. După cum sa menționat deja, de către utilizatorii care au dispozitive din GPS-modulul, Latitude primește și coordonate, precum și lista de rețele care văd dispozitivul. Pentru a evalua calitatea el determină în primul rând locația aproximativă, concentrându-se doar pe aceste rețele. Și apoi verifică dacă coordonatele reale cad de cerc presupunând că utilizatorul Latitude.

Folosind aceasta tehnica, am obținut următoarele cifre:
- pentru 83% din cereri pe zi locația este specificat corect - GPS-coordonatele dispozitivului a lovit zona numită Latitude
- 14% din semnalele - cu eroarea:
- 7% - o eroare de mai puțin de 100 de metri
- 5,6% - de la 100 de metri la mai mulți kilometri
- 1,4% - Locator oraș greșit
- restul de 3% din interogările sunt răspuns „Locul de amplasare nu este găsit“
Este posibil pentru a obține o calitate mai bună? Da. Avantajul este că doar colecteze mai multe date la o anumită maturitate de algoritmi pentru a determina locația mai precis. Și este destul de ușor, deoarece creșterea numărului de rețele Wi-Fi, precum și numărul de utilizatori ai aplicatiilor noastre.
Dar există limite tehnologice:
volume de calcule
Pentru a răspunde rapid la utilizator, întregul răspuns este necesar să se pregătească în avans, sau cel puțin, o parte substanțială a acesteia. În fiecare noapte cluster-ului pe baza sistemului nostru de calcul distribuit YAMR agregă semnalele primite până la ieri, obtinerea gata pentru răspunsul „nor“. La momentul cererii Latitude rămâne doar modul corect de a le combina. Deci Teraocteți „semnale prime“ au scăzut la 1,5-2 GB de răspunsuri gata făcute, care se potrivesc cu ușurință în memorie. Și de formare de răspuns este potrivit aproape întotdeauna în 1 ms, și fiecare server din cluster poate rezista la 10 de mii. RPS.
Iar durata de calcul de zi cu zi nu a crescut liniar cu istoria-semnalul GPS, am realizat „aditiv“ nori. Acum este suficient pentru a stoca doar câțiva indicatori pe fiecare nor și în fiecare zi, nu trebuie să proceseze toate vechea poveste.
Pentru a pregăti un răspuns mai complet este ineficient. În cazul în care fiecare combinație de rețele grupate într-un singur nor, veți obține o explozie combinatorică. Volumul de răspunsuri gata făcute la numărul tot mai mare de comenzi, în timp ce suprapunerea rețelelor disponibile pentru un răspuns de care aveți nevoie chiar mai mult decât așezări.
Servicii de localizare fără GPS, așa cum am spus, nu este numai Yandex. Dezvoltatorii pot aplica la furnizori comerciali (de exemplu, Altergeo în România și Skyhook wireless din lume), sau de a folosi API-ul platformei mobil sau browser.
asambla, în general, o bază de date în trei moduri:
- conduce în jurul orașului sunt interesați de mașini, scanarea rețelei, și apoi du-te periodic în jurul valorii de nou, în scopul de a actualiza baza de date
- a crea aplicații mobile masive (cum ar fi Yandex)
- a crea o platformă mobilă (de exemplu, iOS sau Android)
Dar, pentru a alege între diferite soluții există doar aplicații dezvoltator geozavisimogo, iar utilizatorul „live“ cu această opțiune. În lipsa unei metodologii uniforme pentru comparație, trebuie să acorde o atenție la exactitatea determinării (raza de „toleranță“ și ratele de eroare) pentru regiune.
Adevărat, iar dezvoltatorul nu poate alege întotdeauna. aplicarea IOS și WindowsMobile se poate folosi numai construit în funcțiile geoopredeleniya sistemului de operare. Aplicarea în cazul în care este disponibil stație de bază curentă și / sau o listă de alte produse decât cea actuală WiFi-rețele.
O altă situație în servicii web. Toate browserele moderne API-ul geoopredeleniya. Și schimbarea browser-ului, utilizatorul schimbă geoopredelitel. În Firefox și Google Chrome utilizează punerea în aplicare Google în Safari - Apple, în IE - Microsoft. Locator nostru funcționează în browser-ul Yandex.