Комментарии 17
Есть еще Here Map Api до 250 тыс запросов в месяц в бесплатном пакете. довольно много всего можно. Ищет довольно хорошо, но по Москве и МО Дадата лучше
С одной стороны, вы проделали хорошую работу, а с другой — ну как можно тестировать массовые сервисы на малых выборках? Это вполне может работать, вы можете даже находиться в Москве, и думать что все хорошо, но потом вы заезжаете в Зеленоград — и ваш сервис может сломаться на раз-два, потому что схема именования там другая, практически нет улиц, зато есть корпуса. Или скажем питерские адреса в том же ФИАС, где название района (Колпино, скажем) всунули внутрь названия улицы. Или улицы типа «Проспект академика В.И. Вернадского» — тоже самое что «Проспект В.И. Вернадского» или просто «Проспект Вернадского».

И таких адресов, на которых ломаются даже известные сервисы (да что уж там — все сервисы), их на самом деле десятки тысяч.

Хороший тест на геокодирование, на мой взгляд, выглядит примерно вот так: берете базу ФИАС, целиком. Строите адреса всех домов, какие там есть. А потом их всех геокодируете. Я вас уверяю — у вас впереди будет много чудных открытый, как писал наш классик. Заодно и быстродействие померяете, и получите собственную базу всех домов в РФ с координатами (ну, если получится). Я бы ожидал, что получится у вас хорошо если процентов 70-80%.
Спасибо за конструктивный комментарий. В рамках статьи я постарался сделать тест-обзор, собрал ссылки на места, где можно тестировать.

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

Потому что не имея «эталонных» координат адресов протестировать целиком базу ФИАС не представляется возможным :-) Сервисы будут давать какие-то координаты, но будут ли они верными — как понять? Только вручную смотреть, куда попала точка.
>Потому что не имея «эталонных» координат адресов протестировать целиком базу ФИАС не представляется возможным
Это вы зря так думаете. Во-первых, некоторые адреса просто не геокодируются. Зачем вам эталлонные координаты, если сервис вообще не сработал?

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

>Только вручную смотреть, куда попала точка.
Достаточно типичная ошибка — не найдя скажем номер дома, вернуть координаты центра города. Так что такие адреса на карте кучкуются вокруг центра. Глазами это просто сразу видно, но и программно любым алгоритмом кластеризации легко ловится, потому что число точек в кластере размером 100 метров не может быть большим — это же дома.
Про качество ответа согласен. У меня всё тестирование как раз и крутится вокруг качества ответа. И примеры когда сервис выдает улицу с таким же названием в другом городе, и даже не в соседнем — у меня в статье тоже есть :-)

Что касается того, что «сервис вообще не сработал». Бывают ситуации, когда лучше, чтобы он вообще не сработал, чем если он вернет дом из соседнего города, при этом сделает вид, что «сработал». Т.е. я лучше буду работать с тем сервисом, который будет возвращать ошибку, когда не может определить, чем с тем, который будет выдавать какие то случайные «похожие» адреса.
>Бывают ситуации, когда лучше, чтобы он вообще не сработал
Согласен. Я думаю, что их больше даже. Только в интерактивном режиме, когда вы ткнули в карту — получили результат, еще как-то пригоден ответ примерный. Если никто на карту не смотрит — примерный вообще не годится, лучше никакого.
>У меня всё тестирование как раз и крутится вокруг качества ответа.

Вот что я имел в виду, когда говорил о качестве ответа:

«properties»: {
«accuracy»: «street»
}

То есть, каждый сервис в каком-то виде показывает, что именно он нашел. И эти части ответа одновременно очень интересны, и в тоже время, не идентичны у разных сервисов. Где-то это условный показатель score: 100, в процентах (не значит ровным счетом ничего), где-то — вот такой показатель уровня, до которого мы распознали адрес (намного удобнее для анализа). Я больше скажу — в моей практике сложность работы с разными сервисами геокодирования одновременно по большей части сводилась именно к поддержке вот этой части запроса. Это не значит, что с остальными все просто, но они как-то более менее однозначно отображаются друг в друга.

Полностью согласен. В нашей глубинке все сервисы "ломаются". И подобное тестирование, в лучшем случае, сравнивает техническую сторону сервисов. Хотелось-бы увидеть тестирование покрытия.
Что хорошо с OSM, так это то, что можно самому нарисовать объект, если их единицы.

Да они и не в глубинке ломаются. Я ведь про ФИАС говорил не просто так — я реально пытался. ArcGIS, который в общем-то не умеет работать с адресами нашей структуры — там просто недостаточно полей, чтобы отобразить все что есть в том же ФИАС, просто тупо сломался на Питере. То есть я смог геокодировать примерно процентов 70 адресов Питера, не более. При условии, что на входе в геокодер адрес одной строкой. Если там структура из города, района и т.п. — то тут уже другие проблемы. Не менее массовые, впрочем.

А еще добавьте сюда, что ФИАС сам не слишком адекватен ситуации. Столкнулись с тем, что (в провинции) объединились два сельских поселения, а ФИАС об этом ни слухом ни духом.


Вообще странно, почему в ФИАС до сих пор нет координат у адресов. При наличии Почты России можно было-бы сделать хоть жилые дома. Причем достаточно быстро, почтальоны везде ходят, смартфоны у всех.

>почтальоны везде ходят, смартфоны у всех.
Знаете, организационные проблемы — самые сложные :) У меня как-то был проект по определению координат, достаточно сложный, который в принципе решался очень просто — у компании было мобильное приложение, и оно вполне могло снимать координаты с GPS, в нужные моменты.

То есть, мы эти координаты вычисляли достаточно хитро — а можно было допилить приложение, и оно бы эти данные давало совершенно точные — и почти даром. Но вся проблема в том, что мобильное приложение — это другой отдел. И у них свои планы.

Почтальонам это нужно?
Графхоппер вроде тоже можно — но с сильными ограничениями. Но геокодировать вроде будет.

И еще тут не упомянуты несколько open source сервисов, скажем описанный тут на хабре газеттер, например (не смог найти ссылку сходу). В том числе специально сделанные под русские адреса. А также несколько вариантов на базе Lucene.
Nominatim, к сожалению, любит точность формулировок (чувствителен к синтаксису запроса).
Попробуйте так:
Россия, Москва, Красная площадь, 3
Россия, Казань, проспект Фатыха Амирхана, 13
Россия, Казань, 2-я Центральная улица, 172А
Проблема в том, что реальные пользователи вводят как попало, и не особо любят точность формулировок
Ну да, я сам обычный пользователь и хочу вводя просто «Амирхана, 13», чтобы мне показали дом № 13 на первом месте, а не заправку с № 13. Но что-то, видимо, пока не так с весами разных тегов и нечётким поиском. Но разработчики стараются, улучшая поиск, как мне кажется со стороны.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.