Позициониране без GPS как оп, savepearlharbor
Сега все повече и повече мобилни приложения са geozavisimymi. Някои хора просто нямат смисъл без знанието на местоположението на потребителя, други стават по-удобни с него. Този така наречен Услуги базирани на местоположението (LBS): навигатори, Foursquare, instagramy снимки с географски маркери и дори напомняния за кандидатстване, които задействат някои определено място, като в близост до офиса или магазина.
За Yandex услуги и приложения, ние създадохме нашата собствена реализация на метода за определяне на местоположение, без GPS - Yandeks.Lokator. Това ви спестява време и да направи нашата молба е малко по-умни. Навигаторът и карти, и да го елиминира първоначално вписване точка на маршрута, дори и да са покрити паркоместа. И при избора на филм в филмов плакат или продукт в мобилен магазин помага да се покаже точно къде да го намерите във вашия квартал. И, разбира се, когато търсите кафене и АТМ - позволява ви да ви покажа веднага следващия, дори когато сте в метрото.
Технология ние отдавна отворен като свободен API. Днес ние искаме да ви кажа как е подреден.
Защо без GPS и по друг начин
В света има няколко реализации на такива комбиниран метод geoopredeleniya а. И изглежда, първият въпрос, пред който са изправени всички разработчици - откъде да получите информация за местоположението на Wi-Fi мрежи и клетъчни кули?
разполагане на базовите мрежови
Дилемата на "да купи или да създадете", ние в крайна сметка избра второто. Основната причина - че със собствените си данни и алгоритми, са много по-лесни за контрол на качеството на резултата. В събирането на информация ни помогна потребители на мобилни Yandex.Maps.
Лице за да участват в този краудсорсинг нищо специално не е необходимо - просто да използват приложението. Тъй като координира данни за околните Wi-Fi мрежи и GSM станции безлични. Те практически не "тежат", както и прехвърлянето им от батерията, съответно, няма да седна.
База данни съставен и се актуализира редовно. И тук ние сме изправени пред следния проблем.
"Преместването на" мрежи
Опитът показва, че идентификационните номера на клетъчните кули, постоянно се променят - номер, който е в центъра на града вчера, утре може да е на ръба. Може да се премести и с Wi-Fi рутери - заедно с техните собственици. И се оказва, че всеки ход е необходимо да се обезсили значителна част от данните.
Ето как ние успяхме да решим проблема в същото време с този ход и кули, и маршрутизатори. От потребителя се изисква да определят местоположението заедно с данните от това коя мрежа да я вижда. Ако списъкът с мрежа е този, който е бил наблюдаван в различни части на града, алгоритъмът отчита колко от него, натрупани сигнали във всяка област и възрастта на последния. Всяка плътна група от сигнали от Wi-Fi мрежа или клетъчна кула, която наричаме "облак". Колкото повече сигнали в облака и какви са пресни, толкова повече се има доверие. Отговорът ще бъде, съответно, най-големият и свеж. Облак, в който не се сигнали над един месец, ние считаме, остарели - дори ако е имало прясно облак от мрежата в друга област.
радиусът на облака
Тъй като позицията се определя приблизително, не може да покаже на мястото - това е необходимо да се направи един кръг (защото радиосигнала в отсъствието на шум се разпределя равномерно във всички посоки). Въпреки че, ако се вгледате в реалните сигнали за картини, най-често това е елипса. В крайна сметка, най-вече да се насладят на Google Maps за автомобилистите. Техните GPS-остават следи по пътя, както и от домакинства и особено от сигналите на сгради на практика не пристигат.
Отговорът бъде изключително точна, радиусът на кръга, трябва да бъде минимално. Ако просто нарязани по периферията около всички точки сигнал за конкретна мрежа, радиусът ще бъде твърде голям. Той е помогнал за намаляване на тепиха. Статистика. Плътност сигнали подлежат на нормално разпределение, което е приложимо обикновено три Sigma. В квартала на радиуса пада 99,7% пункта.
Решихме да вървим напред и експеримент взе една сигма фактор, който намалява максималния радиус, но запазва приемлива точност. Възможно беше, защото в повечето случаи потребителят вижда няколко мрежи. Това е "отворен" коефициент на редукция площ е вероятно да се припокриват с други облаци.
Neoblachnye сигнали
За съжаление, не всички GPS-съвместим сигнали от потребители просто се съберат в облак. Установено е, че, ако те са представени на картата на всички сигнали от една мрежа, в допълнение към "елипса" на това ще бъде една точка и линия. Това е, съответно, единични сигнали значително отдалечени от клъстера на сигнали в същата мрежа, и много дълги GPS-писти (т.е. GPS-сигнал верига).
Сигнали единични, малки облаци и дългите маршрути, които считаме "шум". Когато тя получава отговор, че не е възможно да се намери потребителят вижда една мрежа, за които ние сме известни само на тези сигнали. Ние вярваме, че е по-подходящо от което погрешно, според нашите оценки, резултата.
Когато данните са натрупали достатъчно, е имало и друг проблем с обединението на всички сигнали в един облак. Какво се случва, е, че сигналите от кулата на една част на града също са дошли от друг. Това ни помогна в присъствието на идентификатори на GSM-мрежи местоположение код на населеното място - LAC (Местоположение Area Code). От кулата с един и същ код трябва да бъде в съответствие със стандарта да бъде около, облаците, които бяха "не в моя град" (т.е., сред облаците с друг LAC), беше Locator, за да дадете занижени тегло.
Подобряване на точността на определяне на ...
... на GSM-мрежи
... на с Wi-Fi мрежи
Получената качеството
Първо, няколко думи за това как можем да оценяват качеството на нашите решения. Както вече споменахме, от страна на потребителите, които имат устройства в GPS-модул, Latitude получава и координати, както и списъка на мрежи, които виждат на устройството. За да се оцени качеството той първо определя приблизителното местоположение, като се фокусира само върху тези мрежи. И след това проверява дали истинските координати попадат от страна на потребителя се предполага Latitude кръг.
Използването на тази техника, ние получихме следните цифри:
- 83% от исканията на ден е посочен местоположението правилно - GPS-координати на устройството се появи на местността Latitude
- 14% от сигналите - с грешка:
- 7% - за грешка на по-малко от 100 метра
- 5,6% - от 100 метра до няколко километра
- 1,4% - Locator грешен град
- Останалите 3% от заявките, които са отговорили с "Местоположението не е намерена"
Възможно ли е да се постигне по-добро качество? Да. Предимството е, че можете просто да се съберат повече данни в определен падеж на алгоритми, за да се определи по-точно местоположение. И това е доста лесно, тъй като увеличаването на броя на безжични мрежи, както и на броя на потребителите на нашите приложения.
Но има и технологични ограничения:
обеми изчисления
За да се реагира бързо на потребителя, целият отговор е необходимо да се подготвят предварително, или най-малкото, значителна част от него. Всяка нощ клъстера въз основа на нашата система за разпределени изчисления YAMR агрегати сигналите, получени до вчера, се готви за "облак" отговор. По време на Latitude на поискване само остава по правилния начин, за да ги комбинирате. Така терабайта "сурови сигнали" са се свили до 1.5-2 GB на готови отговори, които лесно се побират в паметта. И обучение отговор е почти винаги се вписват в 1 мс, а всеки сървър в клъстера може да издържи 10 хиляди. RPS.
И по време на ежедневно изчисляване не расте линейно с историята на GPS-сигнал, който сме постигнали "добавки" облаци. Сега е достатъчно да се съхранява само на няколко показатели за всеки облак и всеки ден, не е необходимо отново да го обработи всички старата история.
За да се подготви по-пълен отговор е неефективна. Ако всеки комбинация струпани мрежи в един облак, можете да получите комбинаторна експлозия. Обемът на готови отговори на нарастващия брой на поръчките, а припокриването на мрежи на разположение за отговор трябва дори повече, отколкото селища.
Услуги за местоположение без GPS, както казахме, не е само в Яндекс. Разработчиците могат да се прилагат за търговски доставчици (например Altergeo в България и Skyhook Wireless в света), или да използват API на мобилната платформа или браузъра.
Като цяло се съберат база данни по три начина:
- карам из града се интересуват от коли, сканиране на мрежата и след това периодично обикалят отново, за да се актуализира базата данни
- създаде масивна мобилно приложение (като Yandex)
- създаване на мобилна платформа (например, IOS или Android)
Но да избират между различни решения, има само разработчик geozavisimogo приложения, както и за потребителя "на живо" с тази опция. При липса на единна методология за сравнение, трябва да се обърне внимание на точността на определяне (радиуса на "толерантност" и процентът на грешките) за региона.
Вярно е, че и предприемачът не винаги може да избере. IOS и WindowsMobile приложение може да се използва само вградените функции на geoopredeleniya на операционната система. Заявление когато има ток базова станция и / или списък на WiFi мрежи, различни от настоящата.
Друга ситуация в уеб услугите. Всички съвременни браузъри, вградени API geoopredeleniya. И смяна на браузъра, потребителят може да променя geoopredelitel. Във Firefox и Google Chrome използва изпълнение Google в Safari - Apple, в IE - Microsoft. Нашата Locator работи в Yandex браузър.