Валидатор населённых пунктов и границ (https://atd.openstreetmap.ru)

Готово! 20 минут и всё выглядит хорошо.

Всё, я закончил. Оставался только лишь Агачаул, но там внесены возможно временные изменения.

Ситуация оказалась странной. Территория Карабудахкентского района оказалась нарисованной лишь частично - она покрыта лишь частичного сельскими поселениями, а часть нет. И в такую “ничью” территорию как раз и входит Агачаул (село а не поселение). Все признаки того, что карта района не дорисована.

Я посмотрел на Яндекс. Там всё сделана разумно. Сельское поселение в 2 раза больше. А вот официальные карты спорные. Там странные данные на карте, но правильные данные земельных участках.

Я нарисовал границу которая похожа на правду, но не нашёл правильной официальной карты. Поэтому несколько точек вставлены примерно.

Кстати, вот как выглядит вторая часть сельского поселения Агачаул в Яндекс. Вся информация не противоречит документам по земельным участкам.

@fserges обновите валидатор, пофиксил все села в Ростовской области.

Вообще хотелось бы видеть минимум ежедневные автоматические обновления валидатора. Обновление 1-2 раза в неделю отбивает все желание заглядывать в него. Если проблема с реализацией, выкладывайте в опенсорс, сообщество подхватит

Хотелось бы чтобы было так. В конкретном случае это невозможно, но в целом у меня есть сомнения, что это легко делается. Поэтому расскажу историю.

Через несколько месяцев будет 15 лет как я в ОСМ. И много лет правил данные в ОСМ почти ежедневно. Когда я пришёл в ОСМ, то существовал валидатор АТД. Но он не был опенсорс! Он прогонялся Александром Дежиным, работавшим как я понимаю для GIS-Lab ( GIS-Lab: О GIS-Lab ). Я валидатором пользовался много лет.

Этот валидатор был в PostGIS/PostgreSQL. Он не был открытым. Но он многое умел. Но 12 лет назад случилась катастрофа. Были удалены SQL файлы валидатора. И автор написал что файлы восстановить невозможно, а код то ли не им был написан, то ли очень сложный. У него нет времени на восстановление валидатора. Мне нужен был валидатор, но шли месяцы, а нового валидатора не появдялось.

Мне были нужны данные АТД в ОСМ, но не было валидатора несколько месяцев. Никто не хотел писать новый! Тогда для моих правок я решил написать свою версию валидатора для ВРЕМЕННОГО использования. Скоро появится опенсорс проект и я откажусь от своего валидатора - думал я.

Но как? PostGIS/PostgreSQL я не знал совсем, да и сейчас я знаю SQL на простом уровне. Нужна мощная база данных. А тогда я имел опыт по работе только с одной базой данных. С которой я занимался на работе, и работал 2000-е годы. Это 12 лет назад была устаревающая БД, а сейчас наверное никто и не знает эту БД. Но я тогда хорошо владел этим языком и БД была очень быстрой.

Чтобы не выглядело как работу с мусором, напишу, что я на этой базе поддерживал систему, на которой в 2005 году было 500 пользователей ежедневно, порядка 1000 в течении года. Это физически было несколько серверов. И прекратило свою жизнь только когда компания перешла в состав “Газпрома”. Это была очень быстрая БД.

Я за несколько недель написал код. Он выглядел очень логично. Но я запустил, и программа выдала результаты … только через 25 часов! И как же тогда делать запуск ежедневно?

Пришлось заняться оптимизацией. Вместо понятного кода и данных пришлось писать бинарный код который разбирал бинарные данные. Код перестал быть читабельным, но работал 8 часов.

Далее я немного упростил работу. Мой валидатор делал меньше проверок, чем написанный на PostGIS. Ценность этих проверок была довольно узка а выполнялась несколько часов.

В конце концов была готова версия которая работала на тогдашнем компьютере 5 часов. Причём если она работала то загрузка диска/процессора занимала почти 100% ресурсов.

До 2017 года валидатор был на работе. На компьютере я работал днём а компьютер работал круглосуточно. В 3 часа ночи стартовал валидатор, отрабатывал работу в 8 утра. Я приходил на работу и заливал данные на сайт.

Сейчас техника стала мощнее. Сейчас валидатор запускается на компьютере, на котором 32 Гб памяти, да и диск существенно быстрее чем был 10 лет назад. Сейчас валидатор полностью отрабатывает за 3.5 часа. Но эти 3.5 часа лучше комп не трогать.

До 2022 года я пользовался osmconvert для генерации pbf файла, но после что-то изменили в формате pbf и я не смог найти работающую версию osmconvert. Теперь я скачиваю pbf с Geofabrik Download Server . А они выкладывают файлы только раз в день. Иногда в 7 утра а иногда в 10 утра. При этом в файле - данные на полночь. Когда вадитатор заканчивает работу, то данные устаревают на 14 (!) часов.

Я пробовал много версий osmconvert. Брал версии выложенные на Вики, в рекомендованные на форуме и т.д. Но в течение месяца они портили pbf файлы который через месяц ломались. Хорошо хоть что есть Geofabrik Download Server . С них я качаю файл несколько лет.

Теперь про объём данных. Все считают что это лёгкие данные. Однако это не так. Вот какие цифры на сегодня.

PBF-файл занимает 3714 Мб. Распакованный PBF-файл в OSM файлы составляют 57057 Мб. Файл базы данных - 8027 мегабайта.

На https://atd.openstreetmap.ru/ выходит много информации каждый раз. Это 17114 html файлов, которые занимают сейчас 142 мегабайта.

Возникает вопрос. А зачем БД? Раз-раз и написал на Питоне. Но очень много данных. Без БД не справиться. Вот статистика. Сельских населённых пунктов - 152741 (без ДНР, ЛНР и т.п.).

Это впечатляющие числа. Но если перевести эти цифры в точку, линию, отношение то впечатление вырастет ещё больше.

Вот статистика от валидатора сегодня.

  • Отношений - 39 908
  • Линий - 277 583
  • Точки - 1 0382 634
  • Свойства - 2 2628 30

Как такие числа обрабатывать без знания БД?

Впечатляют числа? Но это только незначительная часть проблем.

Проблемы не только в ОСМ, но и в данных ОКТМО/ОКАТО. Постоянно переименовываются населенные пункты, меняются границы, меняются данные. Это не так просто - запускать валидатор раз в день круглый год.

Изменения в ОКТМО/ОКАТО прилетают раз в месяц. Нужно как минимум подхватывать изменения. Но вот беда, данные ОКТМО появляются с задержкой. Например, Ростов Великий в ОКТМО всё ещё Ростов. Прошло 5 месяцев с переименования а в ОКТМО всё по старому. И таких изменений довольно много.

Нужно не просто 12 раз год обновлять ОКТМО, так ещё и делать правки устаревших данных!

Кроме того, не все 100% данных в ОКТМО правильны. Есть некоторое количество ошибок. Их тоже нужно поддерживать. Зачем деревню называть как в ОКТМО, если в ней ошибка тянется годами?

Ну и в валидаторе приведены данные о численности населения на 2025 год. Эти данные можно выбросить, но я считаю их важными. Но проблема в том, что 12 раз в году меняются и коды и названия! В худшим случаи я валидатору посвящаю пару дней в месяц.

1 Like

Поэтому у меня есть скепсис по поводу валидатора. Его нужно написать так чтобы было открытая БД и требуются изменения как минимум 12 раз в году.

Но нужен ли кому нибудь валидатор? Несколько лет я был уверен что нужен. Я писал в теме и всегда получал качественные ответы.

4 год назад стало меньше посетителей.
3 года ещё меньше.
2 года только несколько постоянных участников
1 год назад получал ответ только от нескольких человек

Сейчас такое ощущение что я пишу и читаю лишь сам.

Ну вот готово результаты работы свежего валидатора.

Что случилось? Опять Крым. Похоже у нас снова проблемы.

Как работает валидатор? Если видит, что addr:country=UA то он выбрасывает из рассмотрения. А в Крыму нет теперь районов отличных от addr:country=UA.

Явно были удалены записи. Так ещё и сделано 2 записи с UA.

Пример Джанкойского района. Этот тег был addr:country=UA - Relation: ‪Dzhankoy Raion‬ (‪1754553‬) | OpenStreetMap а вот этот создан вместо удалённого, но тегом UA вместо RU - Relation: ‪Dzhankoy Raion‬ (‪19161871‬) | OpenStreetMap

Так что теперь у нас 2 Джанкойских района и все они имеют addr:country=UA.

Может кто-то восстановить данные?

Зачем смотреть на тег addr:country? Крым входит в границы России в OSM, значит принадлежность рассматриваемого района России можно определить геометрически.

Почему бы Вам не открыть исходники валидатора? Я думаю, нашлись бы люди, которые бы захотели покопаться в них и помочь если не кодом, то идеями. Лично я бы покопался.

Немного не понял вашего вопроса. Нет сейчас российских или общих районов, только украинский. Посмотрите на теги. Там даже name=на_украинском_языке и ссылка Википедию на украинском языке.

Или вы считаете что деление на районы Крыма одинаковы между Россией и Украиной? А я скажу что данные по районам различаются. Например, по российскому АТД Симферополь не входит в Симферопольский район а в входит в городской округ Симферополь. А по украинским данным он входит в состав Симферопольского района. И таких отличий много.

Поэтому и вводили раньше объекты где addr:country=RU или addr:country=UA.

А вот второй Симферопольский район который недавно был российским. И как валидатору работать с двумя районами?

К слову про открытие исходников. После этого вы сможете запускать валидатор через GitHub Actions. Они дают 2000 часов CPU в месяц, чего должно хватать на ежедневные запуски.

Например, так работает подсчёт статистики по правкам в мире. Спокойно влезают и обрабатываются за 2 часа 7 гигабайт архива с метаданными правок.


Но нужен ли кому нибудь валидатор?

Зависит от понятности как исправлять и как много. Я например посматриваю в валидатор от Microsoft, который ежеминутно отслеживает береговую линию и крупные границы. Если границу недавно порвали, то обычно легко пофикисить.

Поэтому https://atd.openstreetmap.ru/broken.html я поставил под наблюдение (: А вот в ОКТМО нужно вникать

Сейчас такое ощущение что я пишу и читаю лишь сам.

Наверное новый форум (или просто форум) отпугивает, и все по телеграм чатам разошлись

Смысла в этом нет, там слишком древний (в стиле 1990-х) код. Но если вы хотите валидатор, то почему бы не создать новый, современный валидатор?

Вы знаете PostGIS/PostgreSQL? В PostGIS лучше всего делать проверки пересечения границ, это основная работа валидатора. Я всё время хотел познакомиться с PostGIS и переписать валидатор, но всё время возникали какие-то проблемы. Может я в этом году найду время, чтобы поизучать PostGIS а может и нет.

Программирование валидатора - простая работа. Я в свободное от работы время писал код и у меня на это ушло 3 недели. С нуля! Это была моя первая программа в ОСМ!

Более того, не сравнить данные 12 лет назад и сейчас. Тогда в ОСМ не было многих объектов, было много ошибок. Было ясно, что потребуются ГОДЫ, чтобы навести порядок!

12 лет назад не было ОКТМО который обновляется 12 раз году. Тогда это была огромная ручная работа. Очень большой объём работы и масса ошибок в ОКТМО.

Я буду рад, если будет написан новый валидатор :slight_smile: Вы будете писать и сравнивать результаты с ещё работающим кодом. И напишите более грамотный код чем я 12 лет назад.

Я даже читал эту книгу 3 года назад, но на работе шла куча проблем, спустя несколько месяцев я снова забыл многие детали.

Кстати, эта книга есть в русском переводе! Стоит порядка 3000 рублей.