OpenStreetMap

_PG_'s diary

Recent diary entries

JOSM. Плагин RelToolBox. Практический пример использования: исправления болот в лесу

Posted by _PG_ on 31 May 2020 in Russian (Русский)

“Очень часто новички рисуют болото в лесу, не вычленяя эту территорию из территории леса. Потому что лес нарисован мультиполигоном, а работать с ними сложно. Получается, что у нас полигон болота залит поверх полигоном леса. Это некорректно. Записал демонстрацию работы по поиску и исправлению таких ошибок.”

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

https://www.youtube.com/watch?v=yXiDKB9l6Sg

JOSM. Редактирование мультиполигонов

Posted by _PG_ on 31 May 2020 in Russian (Русский)

Запилил видос по работе с мультиполигонами (1ч 15мин), возможно кому-то будет интересно.

  • Что такое мультиполигоны и зачем они нужны
  • Как эти мультиполигоны устроены
  • Почему нужна автоматизация при их редактировании
  • Создание новых мультиполигонов, а так же редактирование и починка уже существующих
  • Типичные ошибки, а так же их поиск

https://www.youtube.com/watch?v=XLefItn3xjA

Первоначальный сценарий писался из расчёта, что зритель “уже посмотрел предыдущие обучающие видео”

  • По устройству карты OSM
  • По работе с геометрией
  • По способам множественного выбора объектов
  • По работе с диалоговым окном настроек JOSM
  • По работе с меню JOSM
  • По добавлению плагинов
  • С описаниями полезных плагинов
  • По управлению панелью инструментов
  • По работе с фильтрами

(Все эти видео в планах есть, а в реальности нет.) В итоге пришлось галопом по европам объяснять почти всё перечисленное прямо в этом видео, поэтому оно адски распухло в объёме.

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

"Есть база с большим числом GPX-треков от джиперских походов 4х4, на карте OpenStreetMap этих дорог нет, как их туда внести?"

Posted by _PG_ on 24 May 2020 in Russian (Русский)

Написал в чате OSM большой развёрнутый ответ на вопрос “Есть база с большим числом GPX-треков от джиперских походов 4х4, на карте OpenStreetMap этих дорог нет, как их туда внести?”

(…Я просто вчера весь день как раз дорожную сеть по GPX-трекам обновлял, так что тема мне очень близка.) Продублирую свой ответ сюда.


“По поводу обрисовки чужих джиперских GPX-треков возникает сразу несколько моментов.

1) Чьи это треки и даёт ли владелец треков согласие на их внесение на карту. Это не всегда так, например сайт “Родники Крыма” прямо возражает против такого.

2) У треков не очень высокая точность, иногда отклонение от реальности может достигать до 50м, поэтому рекомендуется трассировать дорогу по пучку треков, усредняя, а то и подглядывая на спутниковое фото-подложку в тех местах, где дорога просматривается.

3) С подложкой тоже не всё просто: оно может быть не очень точно привязана, смещение объектов на спутниковом снимке относительно к реальному может быть до 15м (обычно не больше 5) и это смещение плавает от места к месту, обычно актуальность измеренного смещения распространяется на 2-3км. Так что если мы хотим ориентироваться на подложку, надо сначала выровнять её. Есть несколько способов это сделать, лично я предпочитаю выравнивать по карте “тепловых треков” Strava, где выкладывается сумма всех тренировок, загруженных велосипедистами на сайт strava.com (их сотни близ райцентров и единицы поодаль, так что полезность метода зависит от конкретного места) https://wiki.openstreetmap.org/wiki/RU:Strava

4) Если вы только начинаете рисовать карту и никогда не занимались этим раньше, было бы вообще неплохо, чтобы вы себе представляли, что это такое и как она устроена внутри. https://medium.com/@pavgavrilov/a9e0ae6f508c

5) Если всё окей и мы можем обрисовывать трек на карту, то есть два способа. Можно воспользоваться встроенным в сайт openstreetmap.org онлайн-редактором (кнопка “редактировать”). Это сравнительно простой редактор для освоения, но он не умеет прямо конвертировать треки в линии на карте, просто отображает трек поверх рисуемой карты, так что можно его обвести вручную. Чтобы такое сделать, надо открыть онлайн-редактор, и мышкой перетянуть gpx-файл в окно редактора. Минусы такого способа - что онлайн-редактор не очень хорошо умеет работать со смещениями подложки (её надо каждый раз сдвигать вручную, неудобным способом, и нельзя воспользоваться смещениями, которые вычислили другие пользователи). Кроме того, считается, что онлайн-редактор менее удобен и менее надёжен, так что для задач сложнее “отрисовать одну тропинку” его не рекомендуют.

6) Второй способ - это установить себе на компьютер редактор JOSM. Он работает по другому - ты загружаешь кусочек карты, работаешь с ним, потом отправляешь свои изменения/дополнения обратно в общую базу. После этого они попадают в очередь на отрисовку на карте OpenStreetMap, а так же становятся доступны для загрузки/доработки другими пользователями. JOSM на сегодня самый продвинутый вариант рисования карты, количество функций намного превышает доступное онлайн-редактору, типовые действия можно автоматизировать и вынести на панель меню и/или на горячие клавиши. Есть сложные инструменты для аккуратного рисования, которых в принципе нет в онлайн-редакторе. Но после онлайн-редактора надо к оффлайн приноровиться, там на уровне базовых вещей есть отличия, вроде разделения “обводим выбираемое левой клавишей, перетаскиваем карту правой”, “отдельно рисуем, отдельно исправляем” и “в режиме исправления линии сами не приклеиваются друг к другу, это отдельное сознательное действие”, после перехода с онлайн-редактора на JOSM к этим вещам надо приноровиться, поначалу они бесят. Из плюсов - мы получаем удобную работу с выравниванием подложек, возможность отметить брод одним щелчком мыши, доступ к инструментам типа “поправить трассировку линии”, “удалить из линии лишние точки” и главное для нас - к инструменту, который напрямую конвертирует GPX-файл в линию на карте.

7) С загрузкой GPX-треков на карту вообще всё не просто. Начать с того, что если мы где-то гуляли, у нас вместо линии, по которой мы прошли, получается линия со “звёздочками” в местах, где мы стояли. Именно по этой причине прямая загрузка треков считается некомильфо (загружающий должен очень чётко понимать разницу между треком и дорогой) и на все подобные действия JOSM будет страшно ругаться. Неплохо бы “звёздочки” вычистить заранее. Либо в каком-то редакторе треков, либо пропустить через какую-нибудь автоматическую чистилку, например через программу GPS Track Editor (там есть инструмент для автоматической чистки звёздочек). Даже загружая уже почищенный трек, хорошо бы удалить из него лишние точки (прямая линия километровой длины, на которой через каждые 15 метров стоит точка, ничем не хуже прямой линии километровой длины, у которой точки только на концах). Впрочем, на этапе конвертации трека JOSM предложит вызвать инструмент удаления лишних точек сам, так что не надо особо забивать этим голову.

8) Даже загрузив почищенный трек и сконвертировав его в дорогу (точнее, в линию на карте, в дорогу эта линия превратится только после того, как вы добавите этой линии соответствующие тэги), вам придётся провести с ним работу: найти участки, где он проходит по местам где нет дорог, обрезать эти участки и удалить остальное (мы же не хотим, чтобы создавалась дорога, дублирующая уже существующую дорожную сеть?). После того, как у нас останутся только те куски линии, которые надо вносить на карту, надо их привязать концами к уже существующей дорожной сети, а так же добавить перекрёстки со всеми поперечными дорогами. Это очень важный момент, потому что на карте OpenStreetMap дороги, в отличие от большинства других объектов - это не только картинка на карте, но и связная сеть, по которой разные алгоритмы маршрутизации строят потом маршрут из точки А в точку Б. (Правда, если говорить о сайтах для прокладки маршрутов, они обычно обновляют у себя данные раз в 1-2 недели, поэтому нарисованное на карте сегодня, не заработает в плане прокладки маршрута даже завтра; обычно для оперативной проверки маршрутизации используют приложение osmand с оплаченной подпиской на ежечасные обновления карт - оно позволяет посмотреть, как отразилось отрисованное на прокладываемых маршрутах уже в течение одного-полутора часов.)

9) Вам придётся выучить систему тэгирования дорог. Там есть свои подводные камни. Например, главный тэг дороги (определяющий, как она выглядит на карте) - вообще не зависит от того, как она выглядит, и зависит только от того, как дорога используется. Это обозначение иерархии дороги. Является ли она транзитным шоссе? Является ли она единственной подъездной дорогой к деревне? (тогда не ниже unclassified) Единственной дорогой к ферме? (тогда не ниже service) Или только для лесохозяйственной/сельскохозяйственной техники? (только тогда это track) По внешнем виду это часто не определить, надо смотреть по карте, откуда куда дорога идёт и насколько хорошо оборудована. Самым ярким примером неочевидности обозначения и внешнего вида, на котором учат начинающих маперов, является федеральная трасса “Лена” (“класс=федеральная, покрытие=грязь”). https://www.openstreetmap.org/user/Diomas/diary/13896

Так что приготовьтесь, что можно сэкономить на обрисовке трека, но всё равно придётся глазами проглядывать вносимое на карту и много там с ним возиться. Ещё учтите, что придётся освоить новый инструмент, JOSM, по первости непритязательно выглядящий, но зато очень могучий. Зато результат будет великолепен - будет крутая сеть дорог, по которой можно будет автоматически проложить маршрут.

Конкретику работы с треками в JOSM не привожу, но, видимо, надо будет потом сделать обучающее видео. Для начала поищите в интернете, возможно описание уже есть.”

Перечень новых приёмов, выученных в JOSM по итогам онлайн-картопати

Posted by _PG_ on 10 May 2020 in Russian (Русский)

День 1.

Открыл для себя сильномогучий инструмент в JOSM - фильтрацию объектов по заданным типам. Если кто пока не умеет в фильтрацию, она делается так:

  • Включаем показ панели фильтров в правой колонке панелей (меню “Окна->Фильтр” или хоткей Alt-Shift-F).
  • Создаём в появившейся панели “Фильтром спрятано” новый фильтр, кнопкой “Плюс”.
  • Для того чтобы смотреть объекты с определённым тэгом (например, landuse), указываем строчку фильтрации “landuse | child:landuse” (без кавычек). Первое слово означает “показать объекты landuse”, а второе “показать члены мультиполигонов landuse”, между собой эти условия объединены символом “трубки”, который означает “или”, т.е. мы ищем этим фильтром объекты, которые соответствуют любому из этих двух критериев (и обычные объекты и мультиполигоны).
  • Сохраняем фильтр и он появляется в списке доступных фильтров.
  • Включаем в строчке с фильтром все три галочки. Первая галочка означает “фильтр включён и выбранные фильтром объекты рисуются, но их нельзя потрогать” (все landuse становятся статичной картинкой на карте). Вторая означает “выбранные фильтром объекты нужно вообще скрыть” (все landuse исчезают с карты). Третья означает “нет, наоборот, скрыть всё кроме выбранного фильтром” (все объекты исчезают с карты, остаются только landuse, которые мы можем редактировать).
  • Если щёлкнуть все три галочки в строчке с созданным фильтром, на экране останутся только объекты landuse, а все остальные пропадут и не будут нам морочить голову своим присутствием. И мы можем спокойно заняться приведением этих кем-то нарисованных landuse в порядок, а так же рисованием новых. Принцип работает для любых объектов, но лучше всего работает для объектов, которые содержат другие объекты внутри (это landuse и территории заводов или ферм).

Вот на этом видео Александр Петров (он же Felis Pimeja) демонстрирует процесс рисования карты и в числе прочего очень красиво демонстрирует работу с этим инструментом: https://www.youtube.com/watch?v=F_IB8wI5Ztw

День 2.

  • Использовать плагин/инструмент Improve Way чтобы делать/править сглаженные закругления, одно удовольствие. Щелчком на линию выбираем режим редактирования этой линии. После этого просто клик мышкой - это переставить ближайший узел линии. Ctrl-click - это добавление нового узла (при этом нам подсказывают, как поставить точку, чтобы при этом максимально сгладился угол). Alt-click - это удаление узла. Esc - выход из режима редактирования линии. После этого можно выбирать другую.

  • Если у нас слеплены общими точками два домика и мы нажатием Q квадратим только один, то второй сильно искажается. Чтобы такого не было, надо выделить оба домика и квадратить сразу оба. Тогда этот инструмент справляется с конфликтами и оба дома выравнивает корректно. При этом выбирать домики надо строго по контурам, перещёлкав эти контуры с зажатым Ctrl. Выбраны должны быть только контуры, угловые точки выбраны быть не должны. Иначе инструмент “оквадрачивания” не сработает. Поэтому выбрать нужные домики при помощи “лассо” не годится, он выбирает все объекты внутри контура, включая и линии и входящие в них точки.

  • Чтобы заквадратить и ориентировать домики по какой-либо линии, нужно выбрать две точки на этой линии и все контуры домиков, которые мы хотим по этой линии сориентировать, и нажать Q.

  • Чтобы просто повернуть домик на произвольный угол, используем инструмент Select (S) выбираем контур домика и зажимаем Ctrl-Shift. После этого движение мышью крутит домик вокруг своей оси.

  • Чтобы изменить размер домика не меняя его геометрии, используем инструмент Select (S) выбираем контур домика и зажимаем Ctrl-Alt. После этого движение мышью ресайзит домик.

  • У плагина Building Tools есть расширенные настройки. Они доступны через меню “Данные->Задать размер зданий->Дополнительно”. Там можно указать дополнительные тэги, которые плагин будет автоматически назначать всем создаваемым с этого момента зданиям. Можно, например, прямо указывать, что все рисуемые дома являются одноэтажным частным сектором или многоэтажками. Можно указывать тип крыши и общую часть адреса и т.п.

  • Чтобы быстро обрисовывать сглаженные линии сложной формы (опушки, реки и т.п.) удобно использовать плагин/инструмент FastDraw (“карандаш”). Рисуем контур одним движением мыши с нажатой кнопкой. По окончании нажимаем Esc если результат не понравился или Enter если понравился. Плюсы инструмента - это его же минусы. Рисуемую линию нужно нарисовать одним движением, не отрывая руки, иначе на линии будут артефакты в местах, где рука дрогнула. И линия получается довольно грубой. Но можно потом приблизить её и пройтись по нарисованной одним движением линии инструментом Improve Way, поправив и добавив точек так, чтобы линия точно пролегала по обрисованной границе.

  • Главное достоинство инструмента Improve Way - это то, что с его помощью можно исправлять плохо или криво нарисованную чужую работу, без удаления и полной перерисовки объектов. При этом по максимуму сохраняется информация об истории объекта, сохраняются его тэги, а так же значимые точки со своими тэгами (броды, пешеходные переходы, вхождение в автобуные маршруты и т.п.), которые не теряются и их не приходится перерисовывать повторно.

  • Кроме прочего, плагин Building Tools умеет импортировать адреса из “адресных точек” - следов импорта адресного реестра, когда у нас есть сочетание “адрес-координаты” и в результате импорта в базе ставится точка по указанным координатам с полностью проставленным адресом находящегося на этом месте дома. Если включить соответствующую галочку в настройках плагина, он будет автоматически переносить адрес с этой точки на рисуемый вокруг неё дом, а точку удалять. Это редко когда нужно, потому что адресные реестры редко где удаётся раздобыть и таким образом импортировать. Но когда мы отрисовываем много домиков и у нас для них в базе OSM уже проставлены адреса - эта возможность бесценна.

  • Получил и негативный опыт: Ни в коем случае не надо пользоваться плагином Building Generalization (“выравнивание домов по ближайшей улице”), он вообще неуправляемый. Выравнивает ВООБЩЕ ВСЁ на загруженной карте, причём сам решает, по какой улице выравнивать дома. У меня на карте квартал частного сектора, потом забор, за забором завод и как-то там внутри заводской проезд проходит. Плагин мне повернул все домики из частного сектора на 15 градусов по этому внутреннему заводскому проезду. И комбинация отмены последнего действия (Ctrl-Z) на действия этого плагина не действует. В общем, плохой, негодный плагин.

Дни 3 и 4.

  • Если при использовании инструмента рисования новых линий (A) щёлкнуть клавишу A, то инструмент переходит в режим рисования точных углов. Новый сегмент линии можно рисовать только с поворотом на углы, кратные 45 и 30 градусам. Можно сделать чтобы кратность угла отсчитывалась не от предпоследнего сегмента, а от другого отрезка, для этого надо щёлкнуть нужный отрезок правой клавишей мыши.

  • Инструмент Fast Draw после завершения отрисовки линии и нажатия Enter выполняет процедуру огрубления нарисованного, удаляя лишние точки. Это может быть удобно для рисования гигантских объектов, например, опушек леса, но для рисования водных объектов размером до 10 метров это не подходит - они просто схлопываются в точку. Нужно выбрать этот инструмент и открыть его настройки нажатием Q. Там можно отключить финальное огрубление (непонятно, зачем оно вообще нужно), задать частоту проставления точек в процессе рисования и указать, что линия должна быть замкнутой. Я этим инструментом рисую всегда площадные объекты, так что мне последнее актуально.

  • В ходе работы с инструментом Fast Draw можно регулировать частоту установки точек на рисуемой линии (в метрах). Это делается кнопками “Вверх/Вниз”, выбранное расстояние между точками указывается в строке статуса программы.

  • Чтобы выбрать на карте нужную линию из нескольких склеенных, нужно использовать среднюю клавишу мыши. При этом последовательно перебираются все линии, находящиеся в той точке, которую мы щёлкаем. Кроме того, в момент нажатия средней клавиши появляется окошко, в котором перечисляются все доступные для выбора линии и указание “какая конкретно выбрана в данный момент”. Выбор линии возможен прощёлкиванием средней клавишей, а можно зажать Ctrl и выбрать нужную линию из меню, которое возникает на экране при первом щелчке и исчезает, если шевельнуть мышью, не нажимая Ctrl.

  • Инструмент создания параллельных линий (Shift-P) отличается от простого копирования объекта (Ctrl-C, Ctrl-V). Он создаёт линию, гарантируя одинаковое расстояние между оригиналом и копией для КАЖДОГО сегмента. Каждый сегмент сдвигается параллельно самому себе. При этом сегменты создаваемой копии двигаются в разных направлениях.

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

  • Если выдавливать часть здания инструментом выдавливания (X) с нажатым Alt, то выдавленная пристройка создаётся как отдельное здание. Если с нажатым Shift - то сохраняется промежуточная угловая точка, даже на прямой стене, которую мы удлинили. Если с нажатым Ctrl, то сдвигаемый отрезок выдавливается перпендикулярно самому себе, но вместо прямых углов выдавленную пристройку окаймляют диагональные стены.