Клуб API Карт

Геокодирование по точному названию

varravann
2 сентября 2014, 05:47

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

 

Конкретные примеры:

Ищу "поселок Ошарово, район Эвенкийский, Красноярского края" - находятся и (правильный) "поселок Ошарово Эвенкийский район, Красноярский край, Россия", и (неправильная) "деревня Ошарово, Нижнеингашский район, Красноярский край, Россия".

Тот же эффект наблюдается, например, когда в даже одном районе есть населенные пункты с одинаковым названием, но разным типом (например, "поселок" и "село").

 

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

 

P.S. Ограничить зону поиска по координатам не предлагать, т.к. оная заранее неизвестна.

6 комментариев
Подписаться на комментарии к посту

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

Да, я тоже об этом думал (точнее, об эквивалентном варианте "брать самый первый ответ, если их несколько"). В тех ситуациях, которые я успел проверить руками, это работало (т.е. правильный ответ был действительно первым). Но несколько подлых случаев остались пока без проверки: например, когда совершенно одинаковые названия имеют сравнительно крупный населенный пункт и его "выселки" у ближайшей станции ж/д (которая, разумеется, названа по "главному" нас.пункту), или когда по ошибке картографов два населенных пункта в одном районе имеют идентичные названия, хотя согласно государственным реестрам один из них есть село, а другой - поселок.

Понятно, что описанные сложные варианты - это скорее косяк составления карт, а не механизма поиска/геокодинга, но, тем не менее, с ними надо как-то работать и, главное, контролировать... И вот тут механизм "буквального" поиска очень бы помог: если "буквальный" поиск выдает несколько объектов, то это однозначное показание к "ручному" разбору ситуации; тогда как множественность результатов "обычного" поиска не имеет такой диагностической значимости (мой опыт показывает, что 90-95% случаев - это "горе от ума", а не сигнал о реальной проблеме на карте).

а вы можете привести примеры "подлых" случаев?

Пожалуйста, примеры:

1) Неправильное наименование на карте: ищем "село Вагино, Боготольский район, Красноярский край" - находим два "поселка Вагино, Боготольский район". Согласно гос.справочнику ОКТМО, в Боготольском районе действительно два Вагино, но одно есть село (и адм.центр Вагинского сельсовета), а второе - поселок (входит в Критовский сельсовет). Из рассмотрения карты очевидно, что то, что поменьше и у ж/д - это поселок (и он в поиске Яндекса первый!), а то, что вдали от ж/д - это на самом деле искомое село. В итоге имеем, что "ужелезнодорожные выселки" вытесняют настоящий объект.

 

2) И опять неправильное название: ищем "село Жерлык, Минусинский район, Красноярский край" - видим два "поселка Жерлык", один у ж/д-станции (первый в выдаче!), который действительно поселок (и принадлежит другому сельсовету), и в отдалении от ж/д крупное поселение Жерлык, которое в действительности село (и центр своего сельсовета), а в Яндексе - поселок.

Передал ваше сообщение команде геопоиска. Посмотрим, что можно сделать.

Спасибо.

Я уже придумал частично-костыльное решение (брать из выдачи поля LocalityName и SubAdministrativeAreaName и сравнивать их у первого результата и у последующих - и если есть совпадение, то считать это сигналом тревоги), но всё же лучше было, если бы была "родная" опция, контролирурующая поведение поиска/геокодера.