Москва: импорт данных по уличным часам из портала открытх данных

Ув. freeExec, не подскажите, каков типичный срок вылёживания исправленных документов по экспорту на форуме? Когда считается, что самое время отправлять на Talk-ru и Imports?

От коллеги, занимающегося проверкой данных:

не понимаю, еще и столбы какие-то собираетесь импортировать? выше же речь была про часы.

может, не надо нам столбы с точностью “многометров”?

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

Хорошо, будем считать, что координаты внушают доверия.

Так как самого ref на столбе нет, то это филькина грамота, которая ни чем не подтверждается и по сути к самому объекту не относится и любой желающий может туда вписать что угодно, хоть привет маме.
И тут два варианта, либо мы можем сопоставить объект с данными и утверждать, что ref не верен, но тогда зачем этот ref если других косвенных признаков достаточно для идентификации (ведь он нужен только для этого).
Либо не можем и тогда ref в общем-то не помощник, а только ухудшает ситуацию, ибо любой может изменить, передвинуть, удалить. Скрипт радостно рапортует что всё ОК, а по факту кто-то скопировал объект и теперь их 3 одинаковые штуки. Кто-то решил, что это не тот объект и утащил его в другую сторону. Т.е. полагаясь на номер мы уже не контролируем данные и соответственно в данных развивается бардак и несоответствие.

Поэтому я выступаю за первый вариант, в поиске подходящего объекта по близости. Нашли один - хорошо это он. Нашли два - алярм и надо идти разбираться почему так, лишний ли в осм или данные устарели. А если не нашли, надо поднять прошлый импорт и посмотреть, а загружали ли этот объект уже. А если загружали куда он делся, а если удалили спросить автора почему. Может у нас опять данные не поспевают за окружающим миром.
После заливки данных на сервер им присвоят ID, это можно сохранить и знать, какой объект как был внесён в ОСМ, если сильно хочется.

Неделю как минимум стоит подождать, может кто-то заходит на форум только по выходным.

Такие исключения придётся хранить у себя, что вот те координаты в данных не верные, и надо использовать для соответствия такие. И это мы только координаты смогли проверить, а ещё не можем определять электрическую мощность (кстати зачем оно нужно нам?) и типы часов по внешнему виду, я уверен в этих данных ошибок ещё больше.

В общем импорт это всегда не про открыл данные нажал выгрузить.

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

Просьба, пришлите пожалуйста файл .osm, который вы хотите заливать в базу. Это самый удобный способ проверки импорта на этапе проверки.

по следу идёт коллега, приглядывающийся к набору данных по уличным столбам :smiley: Часы это, так сказать, мой пробный шар. Не думал, что так быстро удастся начать обсуждение импорта.

Точно не надо. Надо на примере часов понять какая точность будет допустимой для часов, а, потом, и для столбов.

Да, проверяемая на местности маркировка часов или столбов отсутствует. Как и рек по водному реестру, как и объектов культурного наследия по ЕГРОКН…
Если примеряться к столбам, то там нередко есть носитель RFID с каким-то номером, но он на высоте ок. 3 м и явно не относится к проверяемым картографами. Значит как часы, так и столбы оставляем без ref:data.mos.ru.

Согласен. Буду опираться только на совпадение до некоторого радиуса с нужным объектом + operator=Моссвет. Ref исключаю из выгрузки.

Да, с обратной привязкой проще будет, если только обеспечить достоверность исходного импорта. Этим как раз и занимаемся.

Создам таблицу и обновлю документацию по импорту.

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

Его нет в природе. См. https://wiki.openstreetmap.org/wiki/RU:Москва/Импорт_уличных_часов_Моссвет#.D0.A0.D0.B5.D0.B7.D1.83.D0.BB.D1.8C.D1.82.D0.B0.D1.82.D1.8B_.D0.BF.D1.80.D0.B5.D0.BE.D0.B1.D1.80.D0.B0.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.D1.85_.2F_Data_Transformation_Results Речь идёт только о полном добавлении новых данных. Увы, конфликты проще решить руками, так их мало.
Если Вам, ув. Grass-snake, известно, что JOSM может генерировать фалы измнений, прошу сообщить об этом. На первый взгляд функционал не обнаружил, документацию совсем плотно не ковырял.

Прежде всего от себя хочу написать, что есть альтернативный вариант: использовать уже готовое решение. Например, мне очень понравилась библиотека Osmapi для Python. Обратите внимание на неё, она может сильно упростить жизнь. Мне очень понравилось получать нужные мне объекты (единичные) через неё. Ещё она может загружать данные в OSM, но этот вариант я на практике не проверял.

Сам хотел заняться импортом, даже начал писать скрипт на Python. Хотел создавать osm-файл, который заливал вручную через JOSM. Тоже читал документацию, понял что ничего не понял и решил действовать методом тыка (но это костыльный способ, на практике не проверял, у меня не дощло до импорта на этапе проверки имеющихся объектов в OSM):

  1. Открываю сайт OSM и иду какой-нибудь отдельностоящий дом. Приближаю до максимума и уменьшаю размеры экрана чтобы на экране (примерно вот так):
  2. Нажимаю кнопку “Экспорт” (сверху). Далее, не меняя размера экрана, синюю кнопку “Экспортировать”. В резальтате мы должны получить файл “map.osm”.
    2.1. Не обязательно: открываем в блокноте этот файл и смотрим что получили. В идеале чтобы там были только те объекты, которые нужно изменять, например для здания 4 node + 1 way
  3. Делаем копию файла (изначальное состояние, которое не трогаем и новую версию, которую будем изменять в следующих пунктах).
  4. Открываю JOSM, ничеге не скачиваю, открываю файл (либо кнопка с синей папкой в верхнем меню, либо Файл→Открыть, либо Ctrl+O). В резальтате мы должны увидеть на экране нашу скачанную область.
  5. Изменяем что-нибудь в JOSM в зависимости от требований, например:
  • двигаем какую-нибудь точку
  • добавляем какой-нибудь тег к уже существующему объекту
  • изменяем существующий тег
  • удаляем существующий тег
  • добавляем новый объект (например, новую точку)
  • меняем существующую линию (например, добавляем в неё новые точки)
  • удаляем объекты
  1. Не отправляем сделанные изменения. Сохраняем изменения (либо кнопка с дискетой в верхнем меню, либо Файл→Сохранить, либо Ctrl+S).
  2. В результате мы должны получить 2 файла, которые отличаются друг от друга сделанными изменениями. Открываем оба файла и смотрим, что изменилось.

Дополнительное упражнение для проверки (чтобы убедиться, что способ рабочий), делаете на свой страх и риск:

  1. Скачиваем любую небольшую область, которую знаем.
  2. Делаем копию (бэкап) файла.
  3. Открываем файл в JOSM, делаем какое-нибудь полезное изменение:
  • добавляем какой-нибудь тег к имеющемуся зданию (почтовый индекс, этажность)
  • изменяем существующий тег
  • добавляем какой-нибудь объект (например, магазин)
    …и так далее.
  1. Сохраняем изменения на диск.
  2. Отправляем на сервер и (если всё прошло успешно), убеждаемся что всё прошло нормально.
    От себя хочу заметить, что передавать в OSM нужно только те объекты, которые Вы меняете

Реальная практика (сначала нужно сделать на тестовом сервере OSM)

  1. Скачиваем какую-нибудь область.
  2. Пишем скрипт который будет что-нибудь добавлять или изменять.
  3. Скармливаем скрипту файл и получаем изменённый файл на выходе.
  4. В первые разы нужно вручную проверить, что изменения верные и ничего не сломалось. У меня на отладку ушло несколько часов.
  5. Пытаемся загрузить изменения в базу. Разумеется, для начала нужно начать с тестового сервера.
    Я до этого ещё не дошёл, забил.

Зачем тут пункты 1 и 2, почему сразу не начать с жосма и загрузки нужной области?

Коллеги, обновил систему представлений для вычисления импорта https://wiki.openstreetmap.org/wiki/RU:Москва/Импорт_уличных_часов_Моссвет#.D0.92.D1.8B.D1.87.D0.B8.D1.81.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D1.8D.D0.BA.D1.81.D0.BF.D0.BE.D1.80.D1.82.D0.B0. Название представлений начинаю с № вычислительного этапа и сортирую представляния строго по необходимости для последующих вычислений.

Изучаю JOSM по подсказке ув. Grass-snake и Osmium с точки зрения генерации файлов измнений. .osm для импорта получил, но он какой-то неполноценный вышел.

Пришлите пожалуйста файл и почему считаете неполноценным?

Кстати, предлагаю перейти на ты.

Присылаю
https://github.com/mkgrgis/OSM_clock_mos/blob/main/Экспорт%20часов.osm
Считаю неполноценным, т. к. заголовки и ветви расходятся с форматом https://wiki.openstreetmap.org/wiki/OsmChange

Без проблем, Grass-snake!

А как ещё избавляться от дублей?

Могу ошибаться (поправьте меня кто знает), но вроде формат OsmChange существует для диффов, то есть когда сервер присылает нам те изменения, которые произошли за определённый период времени.
Если мы загружаем из JOSM в базу OSM, то нужно использовать JOSM file format. Тут меняется параметр: для новых объектов просто отрицательный id (уникальный, это важно), а для существующих объектов указывается действие action=‘modify’ при изменении или action=‘delete’ при удалении.

Не понятно, ты загрузил домик, какие дубли?

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

В том и беда, что у меня генерируется JOSM file format а не полноценный OsmChange. Поэтому и не даю результат на суд публики в привычном для импортов формате.

Домик для римера. Я загружаю небольшую область рядом с местом предполагаемого нахождения частов (прямоугольник в проекции Меркатора). Если в него попала точка с определённым тегов, то значит есть вероятность что это дубль и нужно не доавлять новую точку, а изменять существующую (после ручной проверки, разумеется).

Если загрузка будет через JOSM, то вроде он позволяет открывать свой тип файлов. А дальше проверяем эти объекты и загружаем в OSM как обычный пакет правок. В теории должно работать, разве нет?

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

Да. Только в том и проблема, что по традиции нужно давать результат как .osc / osmChange а не JOSM file format. А так JOSM file format я опубликовал, только толку-то. Для JOSM geoJSON проще, который тоже давно есть

Коллеги, опубликован osmChange. Получен не выходя из PostGIS, команда выгрузки опубликована. Документация импорта измненена, показаны представления, генерирующие сразу osmChange, дана ссылка, уточнён перечень тегов.

https://wiki.openstreetmap.org/wiki/RU:Москва/Импорт_уличных_часов_Моссвет

Вы его открывали в жосме? Он же “пустой” по его мнению.