Похоже я всё же случайно написал лайт версию валидатора нп

Строго не судите. Перед текстом ниже хочу обратить ваше внимание на тот момент, что я не программист и поэтому задача решается без применения единой строчки кода на языках программирования, типа Java, php и т.д. всё это делается исключительно средствами БД (postgresql) и одной утилиты. Кладр получен из доступных источников ( http://fias.nalog.ru/Public/DownloadPage.aspx ) .
БД у меня выгрузка с гислаба России на 23-ье число.

И так.

  1. Качаем с сайта приведённого выше БД в формате КЛАДР 4.0. Распаковываем только KLADR.DBF остальные файлы нам не нужны! (т.к. пока что адресного валидатора нет ещё)))
  2. Ставим Postgresql + Postgis . В созданной БД ставим hstore и postgis (CREATE EXTENSION postgis; CREATE EXTENSION hstore; ) в linux для hstore нужен postgresql-contrib
  3. С помощью программы pgdbf ( https://github.com/kstrauser/pgdbf ) ставим КЛАДР pgdbf KLADR.DBF > 1.sql ; enconv -x UTF-8 1.sql; psql -f 1.sql
  4. БД осм должна быть загружена с ключом --hstore-all и обязательно в --slim моде (из-за того что бы сформировались ещё три таблички в частности planet_osm_nodes )
  5. Берём скрипт отсюда
  6. Просто выполняем команду sh exec.sh или поочередно psql -f с номером.
  7. Полученный результат сохраняется в total.csv в домашней директории (~/total.csv). а так же ошибочные геометрии (problem_geometry).

Полученный таким образом файл готов к открытию в Екселе, т.к. это простая таблица отсортированная по столбцам .И содержащая в последнем столбце osm_id точки, либо \N если он не нашёл её. Хочу сразу заметить об особенностях:

  1. Если в районе две деревни с одним и тем же названием - проставляйте cladr:code или kladr:code (не знаю что правильнее, учитываются оба), т.к. в ином случае идентифицируется одна на угад.
  2. Не стоит специально маппить под этот валидатор он слишком сырой))))
  3. Он использует геометрическую вложенность поэтому addr:district и т.п. игнорятся
  4. Если нет целого района, то скорее всего он либо не валидный (например разорван), либо его нет и как следствие деревни не валидируются.
  5. Для России на моём железе скрипт отрабатывается не более чем за 20 минут (так что формально можно часовые диффы использовать, интересно насколько уменьшится время если использовать, что-то вроде этого) и получен 20мбайтный файл.
  6. В таблице problem_geometry сохраняется не правильная геометрия, вероятнее если вы не нашли район свой в основной таблице, то он может быть в этой.
  7. Прочие проверки, такие как: Наличие полигона, соответствие addr я оставил на потом, т.к. чувствую, что если не напишу этот пост сейчас, то скорее всего не напишу его вообще. Да и они так же делаются простыми sql запросами.
  8. Так же есть возможность добавить произвольные колонки, например широту и долготу деревни. (Если кому-то нужна)
  9. При открытии в Екселе будьте внимательны, кладр код который начинается с нуля (01… 02…) выводится просто начиная с цифры (1…2…) таким образом вместо 13 значений получается двенадцать.
  10. Название некоторых областей я скорректировал в бд, поэтому если вам нужно гарантированно что что-то так-то называется в кладре, то за этим идите на оффциаильные ресурсы, в этой выгрузке название могут различаться.
  11. Города не входящие в муниципальные районы так же добавлены. Соотвественно в двух столбцах указано: Без мр.

Результат работы скрипта: ссылка

На данный момент замапленно 92240 из 194020 нп.

accidentally validator :slight_smile:

Так всё-таки сколько деревнь в ОСМе внесено правильно? Мой валидатор дал число 44548.

fserges точно сказать трудно, т.к. он не учитывает сельские поселения. Я думаю такой уровень абстракции до МР вполне достаточен. Так же я считал только точки (т.к. не везде можно проставить полигоны корректно). Всего в итоговой таблице 193135 НП, идентифицируемых деревень, кроме учёта Якутии и Удмуртии, и может быть ещё пары областей у меня вышло 110112 нп.
Я могу сделать предположение, что если граница СП будет некорректна она вывалиться в problem_geomtry, поскольку он проверяет всю таблицу.

— Я случайно валидатор населённых пунк. Это опасно?
— Ты случайно что?
— Валидатор населённых пунк.

:slight_smile:
Ограничение на длину заголовка?

http://lurkmore.to/%D0%AF_%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D0%BE_X

А давайте теперь кто-нибудь поставит это всё на сервер и сделает экспорт в html, подняв веб-интерфейс?

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

И да , там было случайное и неожиданное ограничение на длину заголовка.

Отредактировал первое сообщение : ) .
Так же только что обнаружил первую ошибку с его помощью - разорванное отношение Ярославского района, которое было в предыдущей выгрузке впорядке :smiley:

Обновил результат работы скрипта на 24-ое число (т.е. на сегодня)

Ответьте на два вопроса:

  1. Есть ли смысл продолжать разработку и куда? Я вроде как исправил все ошибки что знал.
  2. Есть кто уже это использует или как? И что может быть не хватает.

Я не пользуюсь так как пилю свой валидатор, но наличие конкурента приветствую, тем более быстрого, позволяющего проверить геометрию “на лету” :slight_smile:

Просто мой опыт написания программ для пользователей говорит следующее - чем дружелюбнее программа к пользователю тем больше шансов что она будет использоваться … даже несмотря на какие-то явные ограничения.

В каком формате вы берете базу? Если SQL то можно ссылку на дамп откуда вы берете выгрузку.

bim2010 не SQL, всё же osm2pgsql
fserges к сожалению до “на лету” ещё комп нужен соответствующий : D . В целом не думаю, что этот скрипт прямой конкурент. В силу того что сфера применения разная.