Содержание
Доброго времени суток!
Практически каждый из нас оказывался в ситуации, когда блуждаешь в малознакомой части города и пытаешься отыскать нужный адрес. Сейчас, конечно, технологии шагнули вперед и обычный смартфон позволяет здорово ориентироваться на местности.
Тем не менее, далеко не везде и не всё нарисовано на картах Гугл и Яндекс. Не так давно я был в новой части своего города, и, как оказалось, некоторые улицы этой местности просто не показаны на карте. Как можно передать другому человеку, где находишься и как тебя найти?
Собственно, эта небольшая заметка посвящена координатам и поиску конкретной точки на карте с помощью сервисов карт от Яндекс и Гугл. И так.
Как определить свои координаты и как найти адрес по координатам
Начну с Гугл карт, официальный сайт : https://www.google.ru/maps/
Перейдя по ссылке выше, Гугл сразу же должен определить ваше примерное местоположение и открыть карту местности (например, ваш район города, где вы находитесь).
Для точного определения ваших координат — нажмите по кнопке "Определение местоположения", обычно в браузере сразу же всплывает небольшое окно с вопросом, разрешить ли доступ (выберите "Разрешаю").
определить текущее местоположение
Важно! Кстати, в некоторых случаях разные сервисы могут показать вас в "разных местах". Поэтому, перепроверяйте свои координаты сразу по 2-ум картам.
Далее на экране должна появиться синяя точка. Хорошо, если она появиться на какой-нибудь улице с номером дома — можно будет хотя бы сориентироваться, и как-то объяснить собеседнику, где находитесь .
Если же улица длинная, и нет номеров домов (либо, в картах Гугл вообще не обозначены дома на этой территории) — то щелкните левой кнопкой мышки по точке рядом с той, которую определил Гугл — внизу должна всплыть небольшая вкладка, в которой будут указаны ваши координаты!
Координаты представляют из себя два числа. Например, на скрине ниже — это: 54.989192 и 73.319559
Зная эти числа, можно передать свое местоположение кому угодно (даже если он будет пользоваться не картами Гугл, что есть очень удобно).
Получены координаты нужной точки (место рядом с нами)
Чтобы найти по координатам нужную точку в Гугл, просто откройте карты и в поисковую строку (слева сверху) введите эти два числа: через 1-2 сек. на картах загорится красный флажок, указывающий нужную точку.
Ищем точку по координатам
- координаты нужно указывать через точку, а не запятую (правильно: 54.989192 73.319559; неправильно: 54,989192 и 73,319559);
- координаты указывайте в том порядке, в каком дает вам их карта: т.е. сначала широту, затем долготу (если нарушите порядок — получите совсем не ту точку, возможно, вообще на 1000 Км дальше, чем искомая. );
- координаты можно задавать в градусах и минутах (пример: 51°54′ 73°31′).
Яндекс-карты
ПО большому счету, с Яндекс-картами принцип работы аналогичен. Стоит отметить, что если у одного сервиса адрес не определяется, попробуйте использовать другой. Иногда, если в Гугл картах улица или район не прорисован, то в Яндекс — наоборот, он достаточно полно отображается, все улицы подписаны, и можно легко сориентироваться, куда идти и что делать .
В Яндекс-картах также есть спец. инструмент, позволяющий в режиме онлайн узнать ваше месторасположение (справа нажмите на стрелочку в белом круге, см. скрин ниже).
Для определения координат — просто щелкните по нужно точки на карте — всплывет небольшое окно с адресов и двумя цифрами — это они и есть.
Яндекс определил координаты точки
В поисковую строку можно вставлять как конкретный адрес, так и координаты (не забывайте, что их нужно правильно задавать: не перепутать последовательность, указывать через точку, а не запятую!).
Люди легко теряются, но тяжело находятся. Желая разыскать нужного человека мы часто сталкиваемся со сложностями поиска одного среди миллионов других. К счастью, сегодняшние возможности представляют значительно более широкий инструментарий для этого, нежели ещё 50 лет тому назад. Телефонные базы данных, социальные сети, данные миграционной службы и справочного бюро – это далеко не полный перечень поисковых инструментов данного плана. Давайте подробнее разберём, как узнать точный адрес проживания нужного человека, зная его фамилию и имя, и какие источники нам в этом помогут.
Перечень источников по поиску адресов проживания по фамилии и имени
С развитием цифровых технологий процесс поиска людей невероятно упростился. Множество людей имеют профили в социальных сетях, пишут комментарии на форумах, мелькают в лентах новостей. Ведутся различные базы данных (в первую очередь для нужд государственных органов), в которых хранится различная информация о миллионах граждан. И время от времени такие базы случайно или намеренно «сливаются» в сеть или продаются на каком-нибудь рынке, где их может приобрести любой желающий.
Во многих случаях такие базы воруются самими работниками государственных органов
Как же нам узнать место жительства человека по его данным используя подобные инструменты? Давайте разбираться.
Находим своих близких через телефонные справочники
Наиболее простой способ отыскать адрес человека онлайн – это вбить его фамилию и имя в один из присутствующих в сети телефонных справочников. Поисковая система в них организована достаточно удобно, вы сможете найти данные о человеке с помощью его ФИО и номера телефона (обычно это базы стационарных городских номеров). После ввода данных вам будут выведены все найденные совпадения, и вы сможете получить необходимую вам информацию (адрес человека, его телефон, год рождения, другие прописанные по приведённому адресу люди и др.).
Своим существованием данные ресурсы так или иначе нарушают нормы законодательства многих стран о защите персональных данных (требуется согласие человека на обработку и оглашение личной информации). Тем не менее, такие ресурсы функционируют уже продолжительное время, хотя и отличаются довольно нестабильной работой.
Среди таких ресурсов я бы выделил:
-
spra.vkaru.net — ресурс являет собой телефонный справочник, в котором размещены данные о телефонных номерах и адресах абонентов из России, Украины, Беларуси, Казахстана, Латвии и Молдовы. Несмотря на то, что большинство данных сайта датируется серединой-концом 90-х годов, вы можете найти там адреса множества людей. Сам ресурс работает довольно нестабильно, а для россиян он и вовсе заблокирован Роскомнадзором (придётся задействовать VPN).
Поиск людей на spra.vkaru.net
Для работы с ресурсом:
- Перейдите на spra.vkaru.net;
- Наведите курсор на нужную страну сверху, и выберите её соответствующий регион для облегчённого поиска;
- В открывшейся форме нужно будет ввести фамилию человека (и его инициалы), выбрать уровень совпадения, а затем нажать на поиск;
- Сайт выведет найденный перечень людей, в котором вы сможете отыскать адрес проживания человека по его ФИО.
-
nomer-org.xyz – данный популярный ресурс являет собой базу телефонных номеров граждан государств-членов СНГ (включая и покинувшую союз Украину). В большинстве случаев на данном сайте используется та же база номеров, что и на вышеописанном spra.vkaru.net (т.е. середины-начала 90-х годов). При этом возможности сервиса позволяют найти прописанных по искомому адресу людей, что может пригодиться при заключении различного рода имущественных сделок.
Инструкция по работе с сайтом:
- Перейдите на nomer-org.xyz;
- Выберите интересующий вас город, и в поисковую форму введите ФИО нужного вам человека;
- После нажатия на «Найти» вам будут выведены все найденные совпадения с их адресами и телефонами.
Полученные данные на • nomer-org.xyz
Кроме описанных цифровых ресурсов вы можете также воспользоваться бумажными телефонными справочниками, поискав там адрес нужного человека по его фамилии.
Узнать адрес человека через ФМС
Особенностью поиска человека через Федеральную Миграционную Службу является необходимость согласия искомого человека на передачу данных о нём другим лицам. Для запуска процедуры поиска будет необходимо лично обратиться в ФМС (понадобится паспорт). Также вы можете направить ваше заявление заказным письмом, или оформить таковое на сайте Госуслуг.
Для подачи заявления необходимо знать ФИО человека, дату и место его рождения (без указания последних поиск может затянуться на неопределённое время). Также будет необходимо указать причину ваших поисков и информацию о себе.
Подайте заявление на поиск информации о человеке через ФМС
Поиск места жительства по фамилии через справочное бюро
Как известно, в справочном бюро можно получить различные виды справочной информации. В нашем случае нас интересует адресно-справочное бюро, предоставляющие информацию о телефонах и адресах жителей населённых пунктов.
Для запуска процедуры поиска места жительства человека по его ФИО вам понадобится:
- Найти адрес ближайшего бюро по сети;
- Явиться туда и заполнить заявку, в которой указать данные разыскиваемого лица;
- Явиться в намеченную дату и получить запрашиваемую информацию.
Подайте заявку через справочное бюро
Использование базы исполнительных производств
В некоторых случаях адрес человека можно найти в базе исполнительных производств судебных приставов (ФССП) http://fssprus.ru/iss/ip. В случае, если по искомому человеку ведётся какое-либо исполнительное производство и у вас есть номер данного производства, тогда будет необходимо перейти на указанный сайт, и выбрать опцию «Поиск по номеру ИП» . После ввода номера и осуществление поиска вам может стать доступна расширенная информация о должнике, включая и его адрес.
Поиск данных на сайте ФССП
Поиск человека через социальные сети
Поиск адреса кого-либо, зная его фамилию и имя, можно вести и по социальным сетям. При этом в большинстве случаев всё, что будет вам доступно – это указанный на его странице населённый пункт, правдивость указания которого подчас сложно подтвердить. Потому использовать социальные сети в плане поиска адреса человека по ФИО – довольно неблагодарное дело, и может применяться скорее для личного контакта с искомым. В поисках же человека по социальным сетям помогут такой сервис как Яндекс.Люди.
Поиск людей на «Яндекс.Люди»
Заключение
Выше мы разобрали, как можно определить точный адрес проживания нужного человека, зная его фамилию и имя, а также перечислили ряд инструментов такого поиска. Наиболее эффективными из них являются телефонные online-справочники, позволяющие найти адрес буквально за несколько минут. Воспользуйтесь функционалом этих и похожих на них ресурсов для эффективного поиска людей онлайн.
Весной мы добавили в API DaData.ru фичу «Обратное геокодирование», она же «Адрес по координатам». Название намекает: метод принимает геокоординаты и отдает данные об адресе.
Солидный продукт с той же функциональностью предлагает «Яндекс» — он называется «Геокодер». Но сервис «Яндекса» бесплатен только для открытых некоммерческих проектов. Стандартный же тариф — от 120 000 ₽ в год — подходит не всем.
Мы подумали — если сделать бесплатную или недорогую альтернативу «Геокодеру», разработчики наверняка скажут спасибо. И сделали. В статье расскажу, как устроен «Адрес по координатам»: как мы наладили поиск, собрали справочник и упаковали в готовый метод.
Где берем данные и чем ищем адрес
Подступаясь к задаче, мы изучили готовые решения: где взять справочник координат с адресами и как потом искать по этому справочнику географические объекты. Оказалось, за нужными инструментами даже не придется далеко ходить.
Адресные объекты берем в ФИАС — Федеральной информационной адресной системе. Это самый полный из открытых и официальных адресных справочников. Подробно о нем мы уже писали на «Хабре», а сейчас важны четыре факта:
- в ФИАС хранятся все адресные объекты страны, от регионов и ниже — до зданий и дополнительных территорий;
- справочник свободно доступен в форматах DBF и XML;
- ФИАС не идеален — в нем отсутствуют десятки тысяч домов и множество улиц, особенно новых;
- каждому адресному объекту в справочнике соответствует уникальный ID — ФИАС-код. Код объекта иногда меняют, но для нашей статьи это не так важно.
Адресные объекты, загруженные из ФИАС вместе с ID, — основа нашего справочника для обратного геокодирования.
Координаты загружаем из OpenStreetMap (OSM). OSM — проект со свободной лицензией: энтузиасты собирают координаты всевозможных объектов и выкладывают для всех желающих.
Если по-простому, OSM — это набор точек, линий и полигонов на карте. У каждого объекта свое описание, тип и набор координат. Данные OSM для России лежат по адресам needgeo.com, osm.sbin.ru/osm_dump/ и osmosis.svimik.com/latest/.
Список источников публикуют на специальной странице в «Вики» проекта
Выгрузки состоят из PBF-файлов — этот формат используют вместо XML как более компактный. Превратить PBF в OSM XML ничего не стоит, с этим справится куча одобренных сообществом утилит.
Для собственного справочника мы берем адресные объекты из ФИАС, а затем ищем их координаты в OSM. Если нашли, сохраняем объединенные данные. Получается такое пересечение ФИАС и OSM.
И все это замечательно, но есть одна проблема: с качеством данных в OSM дела обстоят непросто. Координаты объектов часто не соответствуют реальности. Например, полигоны для регионов и районов адекватны. А для городов и ниже — уже не очень.
Полигоны — это многоугольники, ограничивающие площади на карте. Они состоят из связанного набора точек с координатами. Полигонами обозначают границы регионов, районов, городов и даже зданий
Основная работа, и с большим отрывом — собрать из OSM адекватные данные и отсеять брак. Задача настолько объемная, что я отвел под нее в статье отдельный раздел.
Дома, которых нет в ФИАС, загружаем тоже из OSM. Выше я уже говорил, что в ФИАС отсутствуют десятки тысяч домов. Это даже не проблема, а просто реальность, фон. Поэтому мы пополняем свой справочник домами из OSM. Но только теми, для которых в ФИАС существует улица. У пришедших из OSM зданий нет ФИАС ID, поэтому мы идентифицируем их как ФИАС-код родителя + номер дома.
По справочнику ищем с помощью прекрасного Lucene — нашего многолетнего помощника. За наводку спасибо сведущему индийцу, написавшему пост Indexing Geographical Data With Lucene (хорошее дополнение — материал A dive into spatial search algorithms — о k-d-деревьях, на которых построен алгоритм поиска).
Как только мы узнали об у́дали Lucene, проблема с поиском решилась почти сама. Делов осталось — пройтись наждачкой.
- Загрузили в Lucene свой справочник координат и адресов, получили поисковый индекс. Для легкости убрали из него почти все, оставив лишь ID адресов и координаты.
- Наладили поиск по индексу: на вход — координаты, на выход — ID найденных адресных объектов. Другой информации поиск не возвращает, поскольку индекс мы донельзя скукожили.
- Насытили выдачу, загружая из «большого» ФИАС данные по найденным ID. Добавляем много всего, от нужного всем адреса одной строкой до признака столицы региона у городов.
- Придумали, как сортировать и отдавать полученные объекты.
Пока все выглядит просто, но это лишь малая часть работы. Никакого поиска адреса по координатам не получилось бы, не собери мы приличный справочник.
Как собрали базу координат и адресов
Для начала выложу багаж: прочитав статью, быстро сделать подобный справочник не получится. Мы собираем его с 2014 года, постоянно дополняя. Об этом чертовски длинном пути я и расскажу.
Самое сложное при составлении справочника — перебрать кординаты, которые пришли из OSM. На старте мы выверяли их как могли, в том числе руками. Главная цель тогда — получить опорные точки в крупных городах и сделать из них эталонный справочник. Теперь, когда таких точек много, проверять новые данные вручную почти не приходится. За раз мы добавляем в эталонный справочник 200 000–300 000 адресов с координатами, и вот как это делаем.
Формируем из OSM-тегов полные адреса́. В OSM-выгрузках составные части адресов разбросаны по разным тегам:
- addr:city — д. Булатниково;
- addr:street — Центральная улица;
- addr:housenumber — 103.
Пробегаем по тегам и собираем из них полный адрес: д. Булатниково, Центральная улица, 103.
Прогоняем каждый новый адрес через API стандартизации «Дадаты». Сервис приводит адреса к единому формату «Как в ФИАС»:
- исправляет опечатки;
- расшифровывает сокращения вроде «НиНо» и «Мск»;
- меняет старые названия на новые;
- находит по индексу пропущенный в адресе город;
- определяет ФИАС-код.
Адреса́ приходят от API чистыми, хоть сейчас шли письмо или бандероль.
До стандартизации | После |
---|---|
д. Булатниково, Центральная улица, 103 |
Адрес | ФИАС ID | Широта | Долгота |
---|---|---|---|
142718, Московская обл, Ленинский р-н, с Булатниково, ул Центральная, д 103 | a8b6a52f-e96d-4ec3-a0ff-641013ab0445 | 55.558773 | 37.667103 |
119034, г Москва, пер Турчанинов, д 6 стр 2 | 8c925e61-9173-48b3-999e-dc85c86d89e7 | 55.737096 | 37.597190 |
Разбираем адреса, которые «Дадата» не стандартизовала. Адреса́, которые не получилось сопоставить с ФИАС, сервис помечает флажком. Их проверяем вручную, вариантов здесь несколько.
- Адрес пришел не в положенных тегах выгрузки OSM, а черт знает где. Встречали и вовсе не заполненные адресные теги, и город в теге улицы, и еще много всего.
- В OSM лежит экзотический объект вроде детской площадки, вузовского футбольного поля или вовсе кладбища. В ФИАС ничего такого нет, да и для наших целей эти результаты не годятся. Такие объекты просто отсеиваем.
- Ошибка — и не ошибка вовсе. Например, из OSM пришел район города, которого в ФИАС нет. Или в ОSМ объект находится в населенном пункте, а в ФИАС этот населенный пункт присоединили к городу и удалили. Тогда мы допиливаем алгоритм под загруженные данные и запускаем снова.
Распарсили выгрузку, а там — путаница в тегах
Проверяем, насколько адекватны загруженные координаты. Для этого специальной утилитой смотрим, попадают ли координаты нового объекта в полигон родительского региона или района. Если адрес сообщает, что объект находится в Омской области, будь добр по координатам попадать в ее полигон. Вхождения в город не требуем — не все города точно освещены в OSM, для многих данные не обновляют.
Эталонные полигоны мы загружаем из OSM и храним как есть — в формате GeoJSON. Чтобы выбрать, к какому полигону примерить точку, смотрим в отдельную таблицу. В ней мы сопоставили префиксы КЛАДР-кодов и ID полигонов: находишь для адреса КЛАДР-код и видишь, какой полигон выбрать.
КЛАДР-код — это уникальный идентификатор, который использовали еще до появления ФИАС. Находить этот код для адреса умеет миллион сервисов
Утилита разрешает объекту отстоять от положенного полигона на 1 700 метров. Это правило добавили из-за шоссе, которые часто выходят за границы региона. Но расстояние больше 1 700 метров — признак ошибки, так говорит статистика.
На этом для городов и улиц проверка заканчивается.
Еще раз, построже, проверяем загруженные координаты домов. В дело снова вступает упомянутая утилита, и вот что она делает.
- Берет адрес нового дома и находит для него соседей в эталонном справочнике.
- По координатам считает расстояние между непроверенным новым домом и надежными соседними.
Соседей найти несложно: 1. Берем новый дом и находим ФИАС ID родителя. 2. Выбираем из эталонного справочника дома́, у родителей которых тот же ФИАС ID
Проверку проходят только дома, которые удалены от надежных коллег не более чем на 150 метров. Причем каждый новый одобренный дом мы учитываем при разборе следующих. Вот как это работает.
Допустим, в эталонном справочнике хранятся дома № 1, 2 и 3 по улице Коммунаров. В новых данных пришли дома № 5, 6 и 7 по той же улице. Судя по координатам, новые дома стоят рядом. Утилита видит, что дом № 5 находится рядом с домами № 1, 2 и 3 и добавляет его в эталонный справочник. Значит, дома № 6 и 7 тоже проходят проверку.
А дальше решается судьба пришедших из OSM данных:
- дома, прошедшие обе проверки: на полигоны и на соседей, добавляем в эталонный справочник;
- если объект не попадает в полигон, новые данные не подходят. То же самое, если расстояние между домом и соседями слишком велико;
- дома, у которых нет соседей, мы пока откладываем. Они лежат в отдельной базе, когда-нибудь разберем.
Делим прошедшие проверку объекты на две части. Они пойдут в разные таблички нашего эталонного справочника.
В первой таблице — все объекты c ФИАС ID до домов: регионы, населенные пункты, улицы. Во второй — дома́ и ссылка на родителя из первой таблицы
Две таблицы нужны, чтобы назначить ключи отсутствующим в ФИАС домам. У них нет собственного ФИАС-кода, поэтому делаем вот как:
- в одну таблицу собираем адресные объекты до дома, у каждого из них свой ФИАС-код;
- во вторую — только дома́, при этом ссылаясь на родителя в первой таблице.
В итоге здания без ФИАС-кода мы идентифицируем по ключу ФИАС ID родителя + номер дома.
Справочник готов, осталось протестировать. За ночь прогоняем сервис по функциональным тестам и тестируем производительность. Скорость проверяем на Москве, запрашивая все дома в радиусе трех километров. Чтобы уж наверняка. Конечно, обложили все автотестами.
Главное после обновления — чтобы не стало хуже.
Обратное геокодирование глазами пользователя
На вход метод принимает три параметра: координаты, количество результатов и радиус поиска. Радиус по умолчанию — 100 метров, максимальный — километр. Точное значение задают в настройках.
Обратно метод возвращает найденные объекты: дома, улицы и населенные пункты. При этом сортирует их по убыванию точности.
- Дома́.
- Улицы.
- Населенные пункты.
- Города́.
Затем сортирует еще раз — по расстоянию от заданных координат. Если метод нашел четыре дома и улицу, сначала встанут дома́ в порядке удаленности от заданной точки. За ними — улица.
После всех этих рокировок метод наконец-то возвращает объекты, которые нашел.
Внутри — много разного о найденных объектах: строки с полным и сокращенным адресом, актуальное и устаревшие названия, почтовый индекс, ФИАС-код родительского объекта и так далее.
Все данные, которые отдает метод — в документации
Покрытие по координатам для разных регионов разное, вот так с домами:
- Москва — 96%,
- Санкт-Петербург — 88%,
- другие города-миллионники — 74%,
- остальная Россия — 47%.
А вот это — покрытие по улицам:
- Москва — 92%,
- Санкт-Петербург — 79%,
- другие города-миллионники — 75%,
- остальная Россия — 67%.
По городам не считали — в масштабах России зыбок даже сам факт принадлежности к гордому званию города. Например, Ярославская обл, Пошехонский р-н, с/о Федорковский — это город, согласно официальному справочнику ФИАС. А по факту, да и по адресу — сельский округ. Физически сельский округ напоминает объединение нескольких деревень в большую кляксу. Сложно не только определить центр, но даже найти населенный пункт на карте.
Уже думаем, что добавить к методу: разрешить фильтрацию по типам объектов, возвращать расстояния до заданной точки, еще что-нибудь. Следим за спросом и решаем, вкладывать ли силы.
А в остальном все уже на проде. До 10 000 запросов в сутки — бесплатно, больше — по подписке от 5 000 ₽ в год. Если нужны адреса по координатам для коммерческого проекта, а «Геокодер» слишком дорог — попробуйте API «Дадаты».
Оригинал статьи опубликован в блоге HFLabs.