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

Если трафик не критичен то проще выкачать local и вырезать то что нужно.

Текущий local это огрызок его уже пора на помойку.

freeExec Так с него всё и нарезают. :slight_smile: Тогда уж весь GisLab на помойку, чего мелочиться.

Так я про него и говорю, гислаб с его обрезкой пора на помойку.

Ох уж эти дружелюбные сообщения! Вчера Крым благополучно сконвертировался, сегодня этого сделать уже не удалось. В логах видно такое:

osmupdate: Merging changefiles.
osmupdate: Creating output file.
osmconvert Error: could not get 183500800 bytes of memory.
osmupdate: Deleting temporary files.
osmupdate: Completed successfully.

В результате на выходе похожий на правдоподобный pbf файл в котором есть все ноды, веи … и ни одного релейшена :frowning:
Какой памяти не хватает - непонятно, т.к. оперативки 16Гб (12Гб отмечено как доступно) и 1.5Тб свободно на диске.

Но вчера же Крым получался нормальным … что случилось - не понимаю …

Добавь

--max-merge=5

Это какой-то локальный баг винды, под никсами такого нет.

К сожалению не помогло, впрочем это было очевидно, т.к. ошибка происходила не на этапе мёржа файлов а при попытке создания мультиполигонов. В целом это проблема сборки под Виндой, osmconvert/osmupdate собраны как win32 приложения, поэтому хоть 2 гига свободно, хоть 10 гигов, разницы нет. Вообщем непонятно, как я смог хоть один раз отрезать Крым, больше мне этого повторить не удалось.

После ряда экспериментов сработал такой вариант:

  1. osmupdate на файл планеты после чего у меня свежая планета
  2. osmconvert -B=rus.poly по свежей планете вырезает дамп России

Когда osmupdate/osmconvert были разведены то ошибок нехватки памяти уже не возникало. Дампы отдельных областей оказались живыми, но …

Но дамп России получается битым :frowning: Пробовал poly файлы предложенные в этой теме wowik и freeExec, ошибка одна и таже - битый полигон Иультинского района, соответственно Чукотки, Дальневосточного ФО и России. Что именно отвалилось я ещё не проверил, просто заметил что много порванных данных и это как раз линия смены долготы, -180, +180.

Детальнее я пока разбирался (результаты прогона дома), но может есть какие-то тайные знания по запуску osmconvert со 180-м меридианом или вообще я что-то упустил? Просто вырезка простых регионов оказалось успешной без всяких дополнительных параметров.

Или поли-файлы были кривые (во что я не особо верю) или же плагин JOSM их портит эти файлы.

А это другая странность, и она не связана с win32. Вот тебе х64 вариант. Там виноваты ключи “–complete-ways --complex-ways” если их не использовать, то все режется нормально.

Да, спасибо, с этим osmconvert уже osmupdate не вылетал с ошибками по памяти.

Но проблема всё равно осталось - хоть со старым хоть с новым обрезка России всегда выходит битой. Уже пробовал по всяком несколько раз и уже даже идей нет. Последняя попытка - скачаю дамп планеты с другого сайта. Мои действия:

Беру poly файл (последняя версия здесь, это минимально исправленный файл от freeExec)
Беру дамп планеты (26 Гб). Запускаю:

osmupdate.exe -v --day -B=RUS.poly planet-latest.osm.pbf ru-latest.osm.pbf

На полученный файл нагоняю osmconvert чтобы получить файл для валидатора:

osmconvert.exe --drop-author --drop-version ru-latest.osm.pbf >ru-latest.osm

Итог: в полученном osm файле отсутствует линия http://www.openstreetmap.org/way/305696338 как в прочем и остальные линии антимеридиана. Соответственно все отношения в который он входит сломаны. И даже не понимаю где искать ошибку.

А если без последней команды где выкидываешь авторов, тоже линий нет?
Ну или тогда ставь линукс и запускай osmconvert с ключами --complete-ways --complex-ways чтобы он линии не попавшие в обрезку оставлял.

Я osmupdate’аю не планету, а страну. Так шустрее.

set country=%1
if not exist %country%.osm.pbf (wget.exe http://data.gis-lab.info/osm_dump/dump/latest/%country%.osm.pbf)
rename %country%.osm.pbf %country%.0.pbf
osmupdate.exe %country%.0.pbf %country%.osm.pbf --day --hour -v --keep-tempfiles -B=%country%.poly
if exist %country%.osm.pbf del %country%.0.pbf
if exist %country%.0.pbf rename %country%.0.pbf %country%.osm.pbf

А потом уже с дропами osmconvert’аю в .osm


..\bin\osmconvert --drop-author %country%.osm.pbf -o=%1.osm

В России обрезаю при этом по регионам.


set PBF_FILE=RU.osm.pbf
rem для Крыма set PBF_FILE=UA.osm.pbf
osmconvert --drop-author --complete-ways --complex-ways %PBF_FILE% -B=%1.poly -o=%1.osm

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

Чудес на свете не бывает. Перекачка planet.osm ни на что не повлияла, все веи со 180-го меридиана не попали в обрезку.

Собственно этой обрезкой я и пользовался слегка изменив (мне кажется это поли-файл рвёт границу РФ). После этого я взял poly-файл из ГИС-Лаба (http://be.gis-lab.info/data/osm_dump/poly/RU.poly) и … естественно что 180-я параллель оказалась в моём файле обрезки.

Беглое сравнение файлов показывает что в приложенном здесь файле используется точно -180.000000 тогда как в файле от Гис-Лаба я встречаю что-то типа -180.000200. freeExec - это точно правильно использовать ровно -180.000000? Ты проверял предложенный файл обрезки (хотя бы на части России)?

Видимо это такой хак, за исходную я брал гислабовский и отредактировал его в josm. Это это он походу округлил координаты. То месте мне собственно не нужно и я естественно его не проверял. Значит надо сделать небольшой нахлёст с обоих сторон, займусь завтра.

Ну вот и нашлась ошибка которую невозможно было найти используя ГИС-Лабовский дамп из-за неактуальности последнего.

Вот этот вей https://www.openstreetmap.org/way/281942624 входит в контур РФ, Красноярского края, но не входит в состав Сибирского федерального округа.

Upd: исправил эту ошибку в JOSM.

Ну всё, пробный проход валидатора на собственном дампе (по часовым диффам примерно на 18:00 МСК) готов - http://atd.osm.rambler.ru/r60189.html. Пока ещё автоматизация не налажена, поэтому возможно что какие-то дни буду прогонять валидатор по ГИС-лабовским дампам, какие-то по моим, но к концу следующей неделе должно всё устаканится. Когда всё заработает - напишу, т.к. скорее всего будет другое время отсечения правок и другое время выкладывания результатов.

Проверил - правка etc\wgetrc привела к работоспособности osmupdate. Получил pbf России накаткой часовых диффов. Насколько полученный pbf файл адекватен я не проверял, заметил что стал чуть больше вчерашнего. Так что завтра попробую прогнать валидатор на своём дампе России уже из офиса. Если всё будет ОК то буду настраивать новую автоматизацию. А сегодня валидатор будет по ГИС-Лабовским данным, у меня совсем нет времени для экспериментов.

Как принято обозначать нп, которых уже нет в валидаторе? Которые, видимо, уже утратили статус нп. locality?
Нужно-ли сохранять нп в осм, если от нп на местности ничего не осталось, а официально он существует?

Этот вопрос лучше обсуждать в данной теме - http://forum.openstreetmap.org/viewtopic.php?id=23571
А чтобы locality попало в валидатор нужно поставить тег oktmo:user с конкретным значеним ОКТМО (что менее универсально) или yes (код высчитывается автоматически)

Вопрос-то в том, переделывать в locality или нет? Да или нет? Если нет нп в валидаторе

Отвечу грубо, возможно упуская ряд деталей, их лучше обсуждать в теме на которую я давал ссылку. Если в реальности НП есть хотя его по документам упразднили то place=hamlet/village остаётся. Мы мапим под реальность а не под документы. Такое встречалось на Дальнем Востоке, на северах, когда начальство отчиталось что НП расселено, но люди пока ещё продолжают жить. Если НП покинут жителями, но его постройки ещё остались это всё равно place=hamlet, только нужно добавлять теги на тему abandoned. Если уже и построек нет и порой даже фундаменты не читаются, то это locality (на официальных планах порой вижу “бывшая деревня Иваново”). locality не является тегом НП, это тег местности, поэтому чтобы валидатор воспринял этот НП как бумажно существующий и ставится oktmo:user как костыль к документу. Есть ещё (как упоминал wowik) слившиеся деревни - когда одна деревня поглотила окрестные, но тут по идее place=neighborhood/quarter.

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