Pull to refresh

Comments 80

Вот мне всегда было интересно — как по WiFi определяется местоположение? Неужели только на основе вот такого сбора данных (когда человек через навигатор передает свое местоположение и данные о ближайших WiFi точках)?
В статье приведены 3 основных способа, как можно собрать данные о том, где в городе какие WiFi-сети находятся:
Вообще собрать такую базу можно тремя способами:
  • объехать интересующие города на автомобилях, сканируя сети, а потом периодически объезжать заново, чтобы обновлять базу
  • создать массовое мобильное приложение (например, Яндекс.Карты)
  • создать мобильную платформу (например, iOS или Android)
Это я прочитал (и даже уточнил в вопросе). Значит только таким образом картографические сервисы (Yandex, Google) определяют местоположение? Просто живу не в городе, но тот же гугл довольно точно показывал местоположение моей WiFi точки.
Ну либо по IP, либо всё-таки кто-то рядом прошёлся с включённым GPS и отправил информацию о вашей точке в базу.
IP конечно статический, но не у меня — все дружно сидим через NAT (я про абонентов провайдера). Вот по этому и интересно.
А если IP статический и только твой — значит провайдер вносит куда-то информацию о местоположении?
Уж не знаю провайдер ли это делает, или кто-то ещё. Но раньше, когда компьютер подключался к интернету напрямую (без роутеров, и Wi-Fi в нём не было), то сайты, которые определяли местоположения точно определяли мой небольшой город.
все провайдеры обычно имеют выделенный пул адресов. Они ведь не хаотично разбросаны, а в пределах блока. Вот этому блоку обычно и назначают координаты (город, страну и т.д...)
Насколько мы можем судить, да, только одним из перечисленных. Геоопределение по IP позволяет в большом проценте случаев (но не всегда) определить с точностью до города, в редких случаях до района.
Google, среди всего прочего, пользуется данными от skyhookwireless.com
На их сайте предлагается указать BSSID wifi-точки доступа и показать на карте её координаты. Вбил свои точки и 2GIS на андроиде стал показывать моё положение. Хорошо!
Отличная статья. Подобное делали на icqnavigator (для J2ME), что-то работало. Правда сейчас не знаю, как там дела обстоят…
Телефон Oppo Finder, город Москва, оператор Мегафон, при работающем 3G не определяет (или определяет очень редко) координаты в yandex картах (при этом нет никакого ообщения), при переключении на 2G координаты определяются.
Google maps в обоих случаях определяет координаты верно.
Пожалуйста, напишите нам в форму обратной связи пару-тройку примеров, в какой день и часы, где именно в городе, и в каком режиме связи получалось в Яндекс.Картах плохое / хорошее геоопределение. Лучше всего упомяните эту тред на Хабре, чтобы коллеги сориентировались. Возможно, понадобятся какие-то дополнительные данные для диагностики. Заранее спасибо!
А собирается ли яндекс выпустить аналог сервиса Google Локатор (Latitude), раз уж база есть?
Увы, мы всегда стараемся не рассказывать о наших планах. Но если выпустим — обязательно расскажем, конечно.
так есть же группы в картах. например у питерского сообщества автомобилистов есть группа. у авторадио есть группа. много их.

правда это не совсем то, чем является локатор.
UFO just landed and posted this here
В перегонах, вестибюлях и переходах метро, в тоннелях автомагистралей, на крытых парковках и «нулевых этажах» некоторых больших моллов часто есть покрытие сотовой связью. В ряде случаев (не всегда) это позволяет установить местоположение по крайней мере с точностью в несколько сотен метров (если в городе).
Хорошо бы добавить такой несложный функционал в Яндекс.Карты, как запись трека.
И для Яндекса был бы плюс — у пользователей появилась бы причина долго не выключать приложение, и данных собиралось бы больше. Не планируете?
Идея хорошая, но есть и другая сторона медали: не перегрузить приложение функциями. Запись трека порой действительно очень нужна, особенно в путешествиях. Для таких случаев удобнее воспользоваться отдельной программой, таких сейчас множество. Яндекс.Карты же более предназначены для поиска нужного объекта и построения маршрута к нему. Здесь запись трека редко кому могла бы пригодиться.
Мне нравятся Яндекс.Карты, и я с удовольствием бы поддержал таким образм отечественную компанию. Но, мне часто нужен простейший функционал записи трека, поэтому приходится использовать другие программы. И один единственный пункт меню «запись трека», думаю, не сильно перегрузит приложение. Всего-то надо сделать сброс координат в xml-файлик, пара десятков строк кода…
Кстати, в версии для кирпичей, J2Me, запись есть! И я успешно ей пользовался на старинном телефоне. А на современном смарте — нет, обидно.
Читал статью про in-door позиционирование с помощью магнитометра. Обещают точность в помещении до 2х метров. Не смотрели ли в этом направлении? Думаю есть возможность повысить точность определния.
Помимо магнитометра нужен гироскоп и акселерометр. Mems технология, что используется в телефонах пока еще очень не точная. Показания датчиков и соответсвенно положения будут уходить быстрее чем через минуту. А так вроде обещают инерциалку в телефоне в довесок к GPS
Все верно, но мы же не собираемся рассматривать движение, а значит гироскоп/акселерометр нам не нужен.
Тогда что вы имеете ввиду под in-door позиционированием?
Читал статью про индор, но экстраполировал на сервис яндекса. Пардон за неясность моих мыслей.
UFO just landed and posted this here
Пока нам неизвестно ни об одном решении, которое можно широко использовать для наших задач.
А о наших собственных планах мы, как всегда, не очень любим рассказывать :-)
А можно как-то по блютузу определять? Я далек от этого, но =) Вот едет рядом с тобой в пробке чувак, у него есть жпс и яндекс карты включены и включен блютуз, я включаю тоже яндекс-карты и блютуз, и у меня его координаты?
Теоретически такое сделать можно, но вам с тем чуваком как минимум придётся спаривать телефоны по синезубу.
А без спаривания вообще никак однозначно не идентифицировать? Уникальный какой-либо идентификатор при поиске не приходит?
Если совсем кратко, протокол Bluetooth практически непригоден для этой задачи. Достаточно даже пары причин (на самом деле их больше): (1) крайне малый радиус действия, (2) по умолчанию выключен.
Спасибо за столь подробную статью, очень интересно.
UFO just landed and posted this here
Насколько нам известно — под iOS приложение может узнать лишь ту wifi-сеть, к которой телефон подключен, а также название оператора — но не номер базовой станции и не список всех ближайших wifi-сетей.

Строго говоря, помимо Android и нашего настольного браузера эти данные могут использовать нативные десктопные приложения (например, под Windows). А чтобы картина была совсем уж полной, есть ведь всё ещё немаленький парк устройств под Symbian.
Думаю, отдельная версия Карт для устройств с джейлбрейком снискала бы популярность, даже без продвижения с Вашей стороны. По некоторым оценкам, таковых устройств насчитывается от 50% до 75%. Интересно, насколько сложно сделать такую модификацию?
К сожалению, устройства с джейлбрейком — совсем немассовый сегмент. Мы стараемся делать массовые приложения, которыми могут пользоваться миллионы простых людей, далёких от технологий.
То есть точности и скорости определения координат штатными средствами в iOS вполне достаточно для ваших задач?
Конечно, мы бы предпочли пользоваться своим решением — но в отсутствие такой возможности да, в собственных приложениях нам тоже приходится пользоваться штатными средствами iOS.
Спасибо за интересную статью. Пришлось однажды решать похожую задачу обработки геоданных, помню как подбирал сигму, комбинировал разные методы кластерного анализа, чтобы избежать n*n сложности при сохранении приемлимого уровня точности, придумывал свои эмпирические «пружинки». В вашей реализации особое уважение вызывает то, что вам удалось справиться с нелинейным ростом сложности и организовать обслуживание массовых запросов практически в реальном времени.
Гуглу очень не достаёт ваших методов отфильтровывания шума. В результате чего Андроид телефон определяется зачастую в других городах. В истории перемещений у меня постоянно попадаются Санкт-Петербург, Красноярск, Сочи, хотя сам я в Самаре. И ничуть их не смущает скорость «телепортации».
Зато Яндекс карты себе такого никогда не позволяли. Спасибо.
Бесплатно дарю идею:
взять облако точек (а еще лучше — треков, конечно), определенных по GPS, со скоростью выше 10-15 км/ч, и наложить его на дорожный граф (а за одно — и на карту). А потом сравнить и попристальнее присмотреться к ребрам и узлам, которые обнаружатся в местах явно низкой плотности облака. Там может оказаться нечто фантастическое.
Именно так и появились Яндекс пробки.
С уважением, ваш К.О.
Пробки — появились, но ровно из той же информации можно извлечь то, что очевидным кое-кому не показалось: информацию о том, что узлы или ребра, на которые практически не попадают треки, не существуют вообще и выдуманы тем, кто рисовал карту. Учитывая существование еще и панорам, такие места можно проверить очень быстро и убрать из карты фантастику. По первому требованию приведу пример.
К сожалению, порой карта действительно очень старая или просто неточная. Зачастую это оцифрованное наследие века бумажных карт. Сейчас мы перерисовываем города, используя все доступные современные технологии: и детальные спутниковые снимки, и треки, и панорамы. Но всю Россию быстро поправить не получается. Так что, если вы знаете регион, где карты неточные, значит он стоит в очереди на тотальную перепроверку.
Если же вы говорите об одиночной ошибке на в целом корректной карте, то о ней можно и нужно сообщить в форме «Сообщить об ошибке» на maps.yandex.ru/
Я про все это знаю — это вполне очевидно.

Хотелось бы услышать ответ на несколько иной вопрос: если Яндекс имеет собственную картографическую основу, то почему в карте при обновлениях появляются новые ошибки, которых раньше не было, в тех местах, где в реальности ничего не менялось?

Это легко объяснимо при импорте — сторонние поставщики основы могут быть разные, у одного нарисовано верно, у другого — ошибка в этом месте, при обновлении одно меняется на другое.
А в случае, если собственная основа только уточняется по сторонним данным, появление новых ошибок выглядит как-то нелогично.
Ответ простой: потому что делая тотальную перепроверку или даже отрисовку с нуля, приходится проделывать огромный объём работы, и ввиду человеческого фактора что-нибудь да идёт не так. Но такие ошибки несут единичный характер. И про них нужно сообщать — это будет очень полезно.
P.S. Напрашивается аналогия: при выходе новой версии программного обеспечения (особенно мажорного релиза) не только исправляются старые ошибки, но почему-то и появляются новые.
На мой взгляд, аналогия не верна. Точнее, она была бы верна при условии, если некий участок был бы по какой-то причине перерисован заново. Но это могло бы понадобиться только в том случае, если там в реальности произошли какие-либо изменения. Если же их не было, но участок кто-то зачем-то редактировал, значит существует некое системное несовершенство в том, как происходит обновление данных. Вот об этом я и спрашиваю — в чем причина или механизм вмешательства в данные, которые уже были верны и не должны были меняться?

В карте все не на столько взаимосвязано, на сколько в коде программы, где один и тот же функционал может переписываться заново, оставаясь для пользователя внешне прежним. Переписывание с нуля вредит карте, не позволяя ей становиться адекватнее, потому что число новых случайных ошибок покрывает число исправленных.

Взять ту же «Народную карту»: с одной стороны, она постоянно улучшается за счет актуализации и добавления новых подробностей, с другой — чуть портится за счет неумелых правок. Но это crowdsource-проект, там это нормально, и если число адекватных участников больше числа неумелых, она будет неуклонно улучшаться. А об «обычной» карте это сказать сложно — создается впечатление, что старые, но актуальные данные при обновлениях часто удаляются, вносятся новые случайные ошибки и т.п. Покрытие, безусловно, растет, но вот некое общее качество в местах, где уже имеется подробная карта, плавает вокруг отметки «посредственное». Что свидетельствует о системных проблемах с процессом актуализации. Когда у Яндекс появилась собственная картоснова, я думал, что затевалось это в том числе ради того, чтобы иметь инкрементальную систему редактирования основы, но пока результат выглядит несколько иначе.
Переход на «свою карту» зачастую означает полную перерисовку с нуля (т.е. не глядя в старую карту), а значит какие-то правильные места в старой карте могут быть заменены на неправильные в новой. Это происходит один раз, далее инкрементальные изменения.
О переходе на «свою карту» объявляли много месяцев назад. Обновлений карт с этого момента было уже несколько.
Провел эксперимент в квартире, где gps, конечно, не ловит. Выяснилось что яндекс карты на андроиде оказались менее точными чем на iOS поскольку андроидные потянуло на проезжую часть рядом с домом, а iOS-ные правильно поставили букву Я на мой дом.
Такие расхождения, разумеется, случаются сплошь и рядом, причём в обе стороны. Точность определения по wifi и сотовым вышкам — штука вероятностная, и всерьёз сравнения имеет смысл проводить только на достаточно больших выборках. Например, объехать интересующий город по ключевым магистралям, и в течение поездки логировать фактические координаты и место по wifi+GSM, определённое разными устройствами в одинаковых условиях.
А я помню, когда гугл запускал такой же сервис, то были забывные моменты, когда по wi-fi определялось положение совсем в другом регионе. Что это было? Переназначали IP адреса или просто лаги при сборе данных?
MAC-адрес wifi-роутера может не быть уникальным.
> Наш Локатор работает в браузере Yandex.
Можно пояснить, что это означает? Яндекс.Локатор это ведь мобильный сервис? Тогда причём здесь ваш десктопный браузер?
Яндекс.Локатор — это API, который по списку наблюдаемых wifi-сетей и/или сотовых вышек, а также уровню сигнала от первых, определяет примерное местоположение.

«Десктопный» браузер в общем случае имеет доступ к списку wifi-сетей, наблюдаемых ноутбуком, и мощность доходящего от них сигнала. По ним браузер и определяет местоположение, обращаясь к Локатору. Разумеется, близость к сотовым вышкам в этом случае не используется.
> По ним браузер и определяет местоположение, обращаясь к Локатору.
На каких сайтах браузер запрашивает доступ к списку WiFi-сетей именно через Яндекс.Локатор? (Или я понял исходную формулировку неправильно?)
Браузер Y видит всегда вышки Wi-Fi в поле доступности Wi-Fi адаптера (если Вы подключены через Wi-Fi к одной из них) и сразу же отдает данные на Yandex-сервер, а местоположение позволяет получать только после подтверждения пользователем (что тоже не факт). Скорее всего — браузер-маяк для такого же сбора данных о вышках, как и мобильное приложение, который работает без лишних вопросов с Вашего согласия с соглашением на использование этого браузера при инсталляции на ПК. (IMHO)
Если я правильно понял вопрос, ответ такой:
1) зайдите на maps.yandex.ru
2) нажмите кнопку с «прицелом» (над полоской управления зумом):
      image

3) браузер спросит «maps.yandex.ru запрашивает данные о вашем местоположении»:
      image

4) после подтверждения браузеру он отдаст Яндекс.Картам данные, полученные от Локатора, и карта сфокусируется на области, где вы, по данным Локатора, находитесь
Извините, конечно, но я всегда понимал ошибку так:image
Как мы описали в статье, Локатор принициально не может определить положение пользователя «точно». Допуск есть всегда. А вот когда Локатор не попадает в допуск, который сам декларирует — с этого момента правильно считать, что Локатор ошибся, «не сдержал обещание». И над минимизацией этой ошибки работать.

Абсолютные величины «радиуса допуска» нельзя измерить «одной линейкой», они будут неизбежно варьироваться от ситуации к ситуации (см. технические пределы точности около wifi и около GSM). Можно оперировать относительными величинами — коэффициентом у сигмы. Про это мы говорили — мы уменьшили этот коэффициент до предела, дальнейшее уменьшение приводило к резкому росту ошибок (выходов за пределы допуска).

В итоге, в этой задаче важен баланс — малые достаточные радиусы и высокая точность попадания в круг допуска.
Попробуйте сравнивать следующие величины:
1. Время входа в зону и время выхода.
2. Угол между вектором соседних точек и дорогой. (для получения направления движения)
3. Аппроксимируйте возможное нахождение транспорта на участке дороги исходя из скорости.
Скорость: длина отрезка полотна дороги в зоне покрытия / (время выхода из зоны — время входа в зону)
Ну и среднестатистическую поправку берите, кто на этом участке за короткий временной период находился. Передавайте цепочкой от вышки к вышке (вдоль дороги) статистику.
Думаю, что реально снизить погрешность таким образом в несколько раз.
А после переезда все сервисы, включая Яндекс, ещё три месяца показывали, что я на старом месте.
кстати да — это болезнь что гугла что яндекса. почему например авторизованным плательщикам yandex.денег не верить когда они просят сменить координаты точки
Если наткнётесь на подобную проблему ещё раз — пожалуйста, напишите нам об этом в форму обратной связи. Возможно после этого коллеги попросят прислать дополнительные данные. Заранее спасибо!
У меня такая беда: яндекс карты с навигатором при остутствии сигнала GPS помещают меня в Москву на улицу, где я жил. Но меня там уже нет почти с месяц, я за 600 км от того места! Когда спутники ловятся всё ок. Гугл карты по базовым станциям определяют всё верно.

Может дело в переехавшем домашнем роутере? :)
Пожалуйста, напишите нам об этом в форму обратной связи. Возможно после этого коллеги попросят прислать дополнительные данные. Заранее спасибо!
Yandex! IT-гигант! Статейкой такие воспоминания навеяли…ностальгия.
Живу сейчас я, значит, в Мск. Раз в 2-3 месяца езжу на родину, к родителям. На машине. Около 1К км в один конец. Родители, зная, что я в пути, порой переживают, как там я в дороге, особо, когда погода не располагает. Периодически звонят и интересуются, где я.
Еще в 9м году посетила идея реализовать трекер, так чтобы родственники могли узнать, где я в данный момент нахожусь, обновив определенную страницу в браузере дома на компе.
Как и многие проекты, создаваемые в одиночку и отчасти ради процесса создания, этот тянулся более года (да, и трекер – это была лишь малая часть функционала).
Платформа была J2ME (хотя и Android'ы уже имелись в доступе). Целевые девайсы распространенные, доступные, GPS естесно не имели.
LAC и CellID отдавались лучше всего на Samsung. SE в основной массе отдавали данные с каким-то отличиями от необходимых (точно не помню, но вопросы были). Nokia S40, как правило, вообще ничего не давали без сертификата trusted-разработчика. Ну, и т.д.
У операторов появились безлимитные тарифные опции для Интернета.
Дорога на родину занимает, как правило, 10++ часов.
Данные о реальном местоположении брались с разных источников (в т.ч. www.opencellid.org/api). Координаты отправлялись на сервер, где с отметкой времени попадали в БД. В браузере результат выглядел следующим образом:
image

Проект был заброшен – эксперименты дали положительные результаты, но дальше бесперспективно, тем более что имелось (имеется?) немало юридических моментов. Хотел было даже IT-гиганту предложить решение, но как-то отпало…
Уважаемый, Yandex, так может, сделаете что-то подобное? Или не положено?

В любом случае, больше спасибо за статью.
Уважаемый, Yandex, так может, сделаете что-то подобное? Или не положено?
Я там выше уже отвечал про аналог Google Latitude.

В любом случае, больше спасибо за статью.
Мы рады, что вам статья понравилась.
Спасибо за Яндекс.Навигатор, считаю его самым лучшим навигатором из существующих, никогда не подводил, довольно точно определяет местоположение даже без GPS, платформа iOS.

А сложно добавить оффлайн поиск, с недавно вышедшим функционалом «скачать карту» это стало актуально, хотя бы по адресам, ведь как то на карте номера домов и названия улиц показывается. Приходится включать интернет, делать поиск и отключать, чтобы батарейка от пользования меньше тратилась.

Кстати присоединяюсь ко всем кто просит Яндекс.Локатор и запись треков, ведь раньше на Symbian OS запись треков в Яндекс.Картах был… Очень полезно там где карты только в большом масштабе, актуально за городом на дачу ездить.
При текущей технологии карта в Яндекс.Навигаторе представляет из себя просто картинку (за исключением векторных карт, которые далеко не везде доступны). Поэтому поиск номеров домов по «скачанной карте» совершенно невозможен. Таким образом оффлайн поиск — это совершенно отдельная технология. Будем делать или нет — зависит от соотношения востребованности и сложности реализации, и как всегда планов не разглашаем.

Про дорогу к даче… а вы нарисуйте её на Народной карте. И будет она у вас в Яндекс.Навигаторе в лучшем виде. И другим людям поможете (друзьям, которые поедут к вам на дачу, или соседям).
>>Разработчики могут обратиться к коммерческому поставщику (как, например, Altergeo в России)
Какой же он альтернативный, если вы его купили несколько лет назад?
Вы наверное путаете. Компания Альтергео никоим образом не принадлежит Яндексу; их базы геолокации существуют и пополняются независимо; сервисы геоопределения развиваются независимо.
Точно, вы же их тогда не купили, просто сотрудничали, и использовали их в Я.Картах.
Sign up to leave a comment.