RU:Универсальный валидатор на основе конвертации в СГ

From OpenStreetMap Wiki
Jump to navigation Jump to search

Валидатор отслеживает основные показатели, отражающие качество карт, при конвертации из OSM в СитиГид. Проверяется адресный реестр, дорожный граф и отрисовка карты. Валидатор разработан участником Zkir.

Страница валидатора:

  • http://peirce.gis-lab.info/qa - полная версия, включает все страны, но обновляется довольно медленно;


Тесты

Дорожный граф

Связность

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

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

Какие дороги включаются в маршрут?

В данном валидаторе в маршрутный граф включаются дороги, предназначенные для *транзитного движения автомобилей*, а именно дороги начиная от trunk и заканчивая residential/unclassified.

service/track в маршрут не включаются, но граф дорог должен быть связан и без них. Это и понятно, потому что если между точками А и Б есть маршрут, то он пролегает по "транзитным" дорогам.

Кроме того, highway=residential не может быть связан только через highway=service. Потому что как то же на нее заезжают. А если заезжают, то те улицы, по которым заезжают - транзитные, highway=residential/unclassified

Также отдельно хочу напомнить, что highway=track - это не есть просто дорога без покрытия. Это дорога по полям, которая имеет сугубо местное значение, например, та, по которой сельхозтехника выезжает на эти поля. Дорога, принадлежащая соединительной сети (например дорога между населенными пунктами), это highway=unclassified+surface=unpaved(earth, dirt, gravel, etc). Поэтому не может быть такого, что посреди поля track переходит в unclassified, а потом снова в track.

А какие дороги НЕ включаются в маршрутизацию?

Дворовые проезды highway=service, козьи тропы highway=track, а так же все пешеходные тропы/дорожки, и, временно, highway=pedestrian (про pedestrian см ниже).

Проблема с highway=pedestrian

В свое время предполагалось, что это hw=pedestrian - это вовсе не пешеходная дорожка/аллея в парке (и откуда в русской вики взялись "аллеи" ? ...), а пешеходная улица, т.е. сущность одного порядка с hw=residential, и должна пристыковываться на общих основаниях к общему графу улиц, пусть с запретом проезда для автомобилей (т.е. hw=pedestrian должно быть эквивалентно hw=residential + vehicle=no). Если приглядеться внимательно, на вики hw=residential описывается вместе с дорогами, а не с пешеходными тропами.

Валидатор vs keepright

Заменяет ли этот валидатор Keepright (проверку "almost junction/не до конца соединены")? Нет, не заменяет. Полностью заменить Keepright этот валидатор не может. Если дорога не пристыкована к другим дорогам совсем, валидатор покажет ее как изолированную. Но если дорога присоединена к остальным дорогам, но не во всех местах, где надо, она показана не будет. В тоже время keepright показывает места, где должна быть общая вершина, а ее нет.

Тупики важных дорог

В этом тесте показываются тупики дорог trunk, primary и secondary.Основная идея очень простая: важная дорога не может просто так (посереди поля) заканчиваться, а должна куда-то вести.Тупиковый участок, т.е. участок после последнего перекрестка, по определению не имеет никакого значения, кроме местного.Таким образом тупики - это ошибки присвоения статусов. В случае же, если статусы расставлены правильно, данный тест позволяет обнаруживать серьезные дефекты дорожного графа, такие как разрывы (выпадение сегментов) несоединенные вершины и даже нерутинговые паромы. Разумеется, этот тест применим только для стран, для которых принята классификация дорог по значимости

Дубликаты дорог

Также проверяется отсутствие дубликатов дорог.

Что это такое: говоря по простому, это когда несколько веев (highway=*) проходит через одни и те же точки.

Данная ошибка не является такой уж критичной, тем не менее это явная ошибка топологии. Лишнее ребро понапрасну нагружает рутер, и вносит анархию в задание запретов поворотов. Например, если запрет действует на одно из двух ребер, на второе он уже не действует. Задание maxspeed тоже теряет однозначность.

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

(картинко)

Кажется, что здесь одна дорога. Но стоит потянуть за ребро...

(картинко)

и вот их две!

один из веев, разумеется, нужно удалить.

Адресный реестр

Этот тест показывает, какие дома/адреса не попадают в адресный поиск после конвертации карт в СитиГид.

В СитиГиде в адресный поиск попадают дома, которые удалось сопоставить с улицами, т.е. название улицы в addr:street на доме соответствует значению тега name некой улицы, причем и дом, и улица находятся внутри одного населенного пункта, обозначенного полигоном place. Что делает данный валидатор: проверяет соответствие имеющихся в OSM домов улицам, с учетом принятых при конвертации в СГ сокращений статусных частей.

Чего данный валидатор не делает: не сверяет адреса ни с какой другой адресной базой типа КЛАДРа, не проверяет названия на соответствие соглашению об именовании улиц.

Отрисовка карты

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

Система рейтинга

По результатам проверки каждой карте присваивается буквенная оценка качества: A, B, C, D, E, F, X (колонка "Рейтинг").

A - Идеальные адресный реестр и дорожный граф. Минимальное количество ошибок по всем показателям. То к чему нужно стремиться.

B - Целый адресный реестр и дорожный граф. Количественные критерии: до 15% не сопоставленных адресов, не более 50 изолятов в полном дорожном графе, не более 5 изолятов в основных (начиная с tertiary) дорогах, не более 10 тупиков магистралей.

B- - Тоже что и B, но с поиском только до улиц. В этот класс попадают карты, где адресов мало, меньше двух тысяч, либо много "неисправимых" ошибок (нумерация по территории, нероутинговые улицы).

C - Кандидат в B. По сравнению с B, наличествуют изоляты в основных (начиная с tertiary) дорогах и тупики магистралей.

D - Целый адресный реестр. Дорожный граф в неудовлетворительном состоянии (до 100 изолятов).

E, F - Многочисленные ошибки как в адресном реестре, так и в дорожном графе.

X - Критические ошибки, приводящие к неработоспособности/неприглядному виду карты: разрывы береговой линии, ("разлившееся" море), превышение допустимого количества роутинговых ребер.

C июля 2012 года выпускаются только те карты, которые получили оценки A и B

Видеолекция

Исходный код

Исходный код опубликован под лицензией GPL 3.0 и доступен на github:

См. также

information sign

Эта статья является неполной. Вы можете помочь проекту OpenStreetMap, дополнив её.