Alexander Mylnikov

19Apr/150

Геолокация без GPS

wifiЗдравствуйте!

Представляю публичную базу геопозиций телефонных вышек и Wi-Fi роутеров. Мне понадобилась стабильная и безлимитная база для приложения Android в котором нужна была точная геолокация из всех доступных источников (GPS, Wi-Fi, Mobile). Пришлось создать базу данных положений сотовых вышек и Wi-Fi. Всех заинтересовавшихся прошу под кат.


Краткое описание работы приложения:

  1. Этап 1. Раз в несколько минут приложение запускает сбор информации о том, что "видно" мобильному телефону (GPS, Мобильные вышки, все видимые Wi-Fi) и сохраняет в локальную базу данных
  2. Этап 2. Телефон раз в половину часа синхронизируется с удаленным сервером и сообщает свое местоположение для каждой записи из локальной базы. Каждый раз телефон узнает "а где он?" отправляя данные о мобильных вышках и Wi-Fi на сервера API.

Алгоритм определения местоположения:

  • Если виден GPS и данные "свежие" доверяем им.
  • Если есть Wi-Fi отправляем запрос на получение положения Wi-Fi. Если найдено положение доверяем ему
  • Если есть мобильная станция получаем ее положение и доверяем этому положению
  • Если все неудачно получаем положение по ip, к сожалению очень не точно

Самое интересное это получение координат по Wi-Fi и Cell ID (идентификатор мобильной станции).

Итак.
К сожалению, я не нашел ни одной публичной обширной и актуальной базы которая предоставляла бы API без ключей и лимитаций. Пришлось создать свою базу. Точнее две для Wi-Fi и мобильных вышек.

Определение местоположения по Wi-Fi (Оригинальная статья)
Здесь я представлю основные выкладки.
Для использования API не нужно никаких ключей, не существует ограничений на количество запросов.
https://api.mylnikov.org/wifi/main.py/get?bssid={wifi bssid}
{wifi bssid} - Bssid точки доступа (MAC адрес сетевой карты точки доступа)
Точность хранимых координат около 140 метров. Количество записей около 10.3М+. База постоянно обновляется и дополняется, но я буду благодарен, если кто-нибудь предложит дополнительную открытую базу.

Определение местоположение по сотовой станции мобильного оператора (Оригинальная статья)
Опять же представлю выкладки
https://api.mylnikov.org/mobile/main.py/get?mcc={mcc}&mnc={mnc}&cellid={cellid}&lac={lac}

  • mcc - Integer (Код страны)
  • mnc - Integer (Код телефонного оператора)
  • cellid - Integer (Код телефонной станции)
  • lac - Integer (Код региона или Area, Location)

Точность данных около 1100-1600 метров. В базе 10M+ вышек. Средний возраст записи 4 недели.

Скрипт API написан на Python, база данных - MySQL.

Надеюсь, кому-нибудь данная база будет полезной и кто-то сможет использовать данную базу как сервис.

Свободу информации!

Comments (0) Trackbacks (0)

No comments yet.


Leave a comment

No trackbacks yet.