Универсальный валидатор (рутинг, адресация) на базе конвертации в СГ

Вопросы, аналогичные Воронежским, есть и по Брянской области.

Обновите, пожалуйста, границу Владимирской области.

http://dl.dropbox.com/u/101358077/RU-VLA.zip

Ототдвинул границу с населенных пунктов, что бы они целиком попадали/не попадали.

AlexeyS, помню, сделаю, наверно уже в понедельник.

НЕБОЛЬШОЕ ОБЪЯВЛЕНИЕ

По многочисленным просьбам трудящихся добавил в валидатор отображение изолятов и улиц вне городов списками. Надеюсь от этого станет удобнее.

Сварганил тут небольшой плугинчик к osmosis, который занимается анализом связности графа. Его можно использовать для разных целей:

  1. Сделать валидатор по всем уровням связности (от trunk до footway), без привязки к другим конвертерам.
  2. Отфильтровать из данных OSM дорожную сеть нужного уровня с выкидыванием “изолятов” или трансформацией их в нероутинговые линии.

Пример обработки Ленобласти (это граф от trunk до service с выделенными изолятами всех уровней):

Командная строка: osmosis --read-xml RU-LEN.osm.bz2 --lp --build-routing-graph graphLevel=service --write-xml RU-LEN_f.osm
На моём домашнем компьютере эта обработка заняла 17 минут.

Замечания, предложения, комментарии - приветствуются. :slight_smile:

Контроль качества (RU-TA) в категории Города без точечного центра выдает ошибку на Коркатово (http://osm.org/go/2QiMpFyS–).
Точечный центр есть, имя у него такое же, как и у полигона, в чем проблема, не ясно.

Точечный центр не попадает в выгрузку, т.к. это Марийка. Полигон цепляется из-за граница+10 км обрезки.
IMHO, перед валидацией надо дополнительно обрезать регионы по границе…

Ага, спасибо, жду
Только нужно добавить вот этот, который последний указал. Я ранее старый где-то указывал - там мало испралвлений.

AlexeyS,
прошло, проверяйте.

shafr, ikz,
какая бы ни была обрезка, пусть даже по границе, она может что-нибудь разломать: границы НП, озера, захватить гранцы но не захватить пунсон нп, итд. Поэтому мы границы обрезки переодически корректируем. Обрезка строго по админ. границе тоже не совсем хороша, потому что в такой границе слишком много точек и потому что могут не вполне удовлетворятся условия к выборке дорог. Последнее - сложная тема, кратко можно сказать, что для СГ желательно чтобы область карты была выпуклой :slight_smile:

Ткните носом, как сделать poly-файл: по Брянской области проблемы с графом сейчас, в основном, ютятся в Белоруссии и на Украине.

  1. качаем поли файлы - ссылка тут где то есть
  2. в JOSM устанавливаем плагин poly
  3. загружаем нужный поли в отдельном слое
  4. правим аккуратно
    дальше сложнее
  5. выгружаем в осм формате и конвертируем в poly

При сохранении в POLY формате плагин возвращает коорднаты
3.991392E+01 5.695309E+01
Я не знаю как такие координаты понравятся системе обрезки и насколько урезанная точность будет неущербна.
Что бы это все не выяснять я скачал:
osm2poly.pl link
тот к удивлению вернул такие же “нехорошие” координаты
но после исправления одной из строчек

        $polybuf .= sprintf("   %E   %E\n", $nodes->{$id}->[1], $nodes->{$id}->[0]);

в такой вид

        $polybuf .= sprintf("   %.12g   %.12g\n", $nodes->{$id}->[1], $nodes->{$id}->[0]);

Выдал нужный результат.

  1. ну еще немного “причесываем” файл чо бы он был похож на оригинал (там первой строчкой название области).
    И готово.

Где качать нужные poly и насколько правильны мои действия, я бы хотел, чтобы уточнил многоуважаемый Zkir

AlexeyS,

спасибо, все правильно.

Скачать поли нужно здесь: https://github.com/Zkir/osm2dcm/tree/master/osm2dcm/poly

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

Уже процесс редактирования границы описан неплохо вот здесь:
http://wiki.openstreetmap.org/wiki/RU:%D0%A1%D0%B8%D1%82%D0%B8%D0%93%D0%98%D0%94#.D0.93.D1.80.D0.B0.D0.BD.D0.B8.D1.86.D1.8B_.D0.BA.D0.B0.D1.80.D1.82.D1.8B

Вообще-то этот формат чисел (“научный”) прописан как канонический в спецификации формата. Его понимают абсолютно все популярные языки программирования наравне с обычным форматом с плавающей точкой. Поэтому не нужно портить инструменты, пользуйтесь функцией сохранения poly в JOSM.

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

Ну да ладно. Раз стандарт принят, и не надо конвертить - настаивать на этом шаге не буду.

Мне тоже кажется что “научный” формат чисел попал в спецификацию формата не от большого ума :smiley:
Географические координаты изменяются в весьма узких пределах (-90…90 и -180…180), поэтому степень и мантисса в применении к ним выглядят более чем странно.

Может запилите Украину в валидаторе по областях?

Угу, особенно при том, что в самом осм координаты хранятся с фиксированной запятой.

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

Это так нужно? Какую проблему это решит?

Подскажите, отношение “Зеленоград” с “comment = Для адресов” - это нужно для данного конвертера/валидатора?
http://www.openstreetmap.org/browse/relation/1988678/history
Валидатор ОКТМО ругается “Вложенные НП (полигон внутри полигона)”:
http://yav.gis-lab.info/boundaries/r1988678
Судя по “матрёшке”, place=town внутри Москвы не предусмотрен.
В матрёшке же лежит “Зеленоградский административный округ”:
http://www.openstreetmap.org/browse/relation/1320358/

Scondo, создавший указанное отношение “Зеленоград”, пишет что “возможно была завязка на выгрузки в СитиГид”.

Нужно, но в данный момент оно некорректное.

Во первых, тегами admin_level = 5/boundary = administrative оно дублирует отношение “Зеленоградский административный округ”.
Надо просто убрать эти теги, оставить только place и name/place_name, а вместо type=boundary сделать type=multipolygon.

Во вторых, надо разобраться, что есть самостоятельный населённый пункт (НП) в рамках региона “Москва”, а что часть НП “Москва”.

В Питере подобные вещи сделаны нормальными отдельными населёнными пунктами (есть отдельный НП Санкт-Петербург, а есть НП Пушкин/Петергоф и т.п. внутри общего региона).
А в Москве почему-то поставили place=city на весь регион, т.е. сделали один большой населённый пункт. В результате масса ошибок на вложенные НП в валидаторе: http://yav.gis-lab.info/settlements/n1686293227-r102269