Инструмент FastDraw для JOSM - рисование и упрощение линий

Заметил, что обсуждение съедает большой объём темы http://forum.openstreetmap.org/viewtopic.php?id=6513
и, в результате, многие старые актуальные запросы завалены далеко и глубоко. Вынесу в отдельную тему - если кому что изменить требуется или глюк заметили, или есть вопросы по использованию - можно писать сюда.

Описание плагина:
http://wiki.openstreetmap.org/wiki/RU:JOSM/Plugins/FastDraw
Назначение - рисование линий мышкой с последующим упрощением (леса, реки, дороги, границы).

Схема работы - мышка-Enter-Вверх/вниз-[Enter, смена инструента или новое рисование]

Можно упрощать существующие линии: Shift-F дважды при выбранной линии (активируется в настройках Q), потом вверх-вниз, Enter.

Выложил следующую версию. Новое (в скобках - авторы идей):

  1. Галочки автофиксации узлов, добавленных кликом/пробелом (Ilis)
  2. Галочка привязки к узлам в настройках (Q) (Hind)
  3. Наглядное отображение интервала при нажатии вверх/вниз, автоскрытие тянучки, когда она не нужна.
  4. (самое главное) Автосохранение линии при смене режима и начале рисования следующей (Felis Pimeja, Ilis). Enter можно жать один раз. А можно и два.
  5. Настройка поведения Enter в (Q) - медленное автоупрощение, быстрое заданное упрощение и сохранение как есть (читерский пункт, буду удалять или хотя бы табличку допишу).

Надеюсь, всё работает. Жалобы и идеи прошу размещать в эту тему.

Я вот чего не понял - рисовал я рисовал, жмакаю по энтеру - линия упрощается, предположим меня результат упрощения не устраивает, что делать? Как вернуться к неупрощенному варианту и поменяв настройки/масштаб снова его вызвать?

Подержать курсорную клавишу «Вверх».

О круто, работает. Спасибо.

Вот несколько соображений, которые возникли в ходе работы с этим инструментом:

  1. Фича, которая позволяет заново упростить нарисованный но не загруженный вей, возможно и полезна, но пока доставляет некоторые неудобства. Я нарисовал контур, хочу нарисовать еще один, но выделение не сбросил. Начинаю рисовать и понимаю что у меня включился режим упрощения предыдущего контура, причем отменить его вроде никак нельзя (Esc не работает), кроме как упростив, но в этом случае теряются теги и членство в релейшнах - приходиться делать undo, сбрасывать , и такое ощущение что иногда это приводит к duplicate ways.

Вообще как мне кажется, возможность выхода из режима рисования линии по Esc была бы полезной. Чтобы не потерять нарисованное можно задавать вопрос если нарисовано больше 10 узлов.
Упрощение существующих линий возможно стоит вынести в отдельный инструмент, с поддержкой тегов и пр. цацками, типа незименения точек с тегами.

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

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

  3. Прилипание к узлам какое-то странное получается - как правило приходтся разлеплять потом, т.к. возможности отказаться по Ctrl как в обычном рисовании линии нет. Возможно стоит попробоавть такой вариант: рисование с зажатой ЛКМ и пробелом никогда не прилипает т.к. вероятность того что шаг между точками совпадет довольно маленькая. По щелчку прилипать, но при зажатом Ctrl не прилипать. Остается проблема с фиксированными узлами, но мне кажется все узлы создаваемые кликом ЛКM / пробелом делать фиксированными.
    При таком варианте работа инструмента будет аналогична стандартному рисованию линий, причем если все узлы фиксированные, то этап упрощения можно будет пропустить.
    Для пущей совместимости можно добавить завершение рисования по даблклику, будет совсем похоже.

  4. Мне кажется было бы удобно, при зажатом ЛКМ/пробеле показывать в статусбаре текущее min_distance, причем не только в пикселях но и в метрах. Поясню, я совершенно не задумываясь проведу линию с точками через каждые 10px, но вот перед тем как проводить линию с точками через 5 метров я трижды подумаю нужна ли в этом месте такая подробность. Судя по тому что в JOSM есть линейка масштаба пересчет должен быть не очень сложным. С другой стороны кружочек частично решает эту проблему, но он только появился :slight_smile:

Простите за простыню :slight_smile:

Эх, тему создал - теперь отвечать придётся )))

  1. Кроме упрощения, можно дальше дорисовыввать или кусками перерисовать
    .
    Undo вроде работать должно, выход по ESC добавлю. Наверное, спрячу упрощение существующей линии подальше - на T T например. Дописывать его муторно и глюков много будет. И споров, как в http://forum.openstreetmap.org/viewtopic.php?id=12895 . Перевешивание тегов и отношений когда-нибудь добавлю. Или просто изменение линии без удаления осилю.

2,3) Тянучку починю, толщину сделаю параметром. На пунктире действительно плоховато видно, что-нибудь придумаем. Серенькую линию тоже можно.

  1. С прилипанием просто глюк какой-то, оно при сохранении происходит. Только что заметил, чиню.
    Сделал галочки в настройках насчёт прилипания и фиксации… Щелкаю точки по одной, а потом упрощаю достаточно часто, так что фиксировать все точки не хочется (с автоупрощением, кстати, логические проблемы могут быть из-за фиксированных узлов, но это лечится). Ctrl занят той самой фиксацией, но на Alt повесить отключение привязки могу.

Даблклик - боюсь, срабатывать часто случайно будет из-за специфики процесса. Сильно кривые линии, вроде, не очень часто рисуются - можно и Enter нажать:)

  1. В статусе можно легко вывести хоть что, главное - чтобы оно туда поместилось :slight_smile: min_distance выведу, но, наверное, при работе стрелочек рядом с пикселами - а то подсказка не влезет. 5 м на отрезок - почему бы и нет, всё равно потом упростится.

Спасибо за потраченное на пост время :slight_smile:

Блин, я похоже в настройки давно не заходил :slight_smile: Там оказывается можно делать многое из того что нужно. И отключение прилипания и фиксированные ноды по клику/пробелы.

Спасибо за наводку на слипание - глючит при сохранении довольно неприятно. Сам только что разлеплял.

Починил, можно обновляться. Остальное неммножко отложу - лето всё-таки:)

А можно общую длину выводить, я просто этот инструмент частенько для трейса рек использую, полглядывая в гвр, совпадает длинна (+/- трамвайная остановка) или нет.

Для длины есть линейка. Так-то не надо обвешивать один плагин функционалом других, иначе это новый редактор получится.

Дак линейка работает только по тому что уже нарисовано, еслиб линейка показывала длинну рисуемой в фастдро линии - сидел и не жужжжал бы.

Это понятно. Но линейка показывает длину рисуемого сегмента в режиме добавления. Более идеологически верно было бы попинать написателя линейки в сторону отображения длины линии в режиме фастдрав.

Хорошо бы, но похоже, придётся мне дописывать, т.к. из одного плагина внутрь другого залезть не так просто. Надеюсь, не срочно)

Может хранить длину в какой-нибудь переменной, а плагин с линейкой сможет её брать и отображать стандартным для себя способом?

Да не к спеху.

Выложил новую версию. За сложное не брался. Добавления:

  1. (!!) Упрощение/изменение существующей линии теперь вызывается нажатием TT, а не сразу (линия должна быть выделена).
  2. Поменял толщину и раскраску линий. Толщина линии настраивается параметром fastdraw.linewidth, цвет упрощенной - fastdraw.color.simplified
  3. Тянучка работает сразу.
  4. Сделал выход без сохранения по ESC (с предупреждением).
  5. Вывел расстояние между соседними точками в метрах при нажатии кнопок вверх-вниз

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

И, наверное, при упрощении до двух точек получается замкнутый вей «туда-обратно» по двум точкам.

Ага, я не заморачивался :smiley: Там проверок никаких нет. Исправлю когда-нибудь, ообенно если ещё способы создать некорректную линию найдёте.

Ага, все работает вроде. По поводу (5), имхо, лучше писать “=10 px (100 m)”, т.к. “or” может как-то неоднозначно восприниматься, типа 3 года или 100 тыс. пробега, в зависимости от того что раньше. И остался неприятный момент с прилипанием, даже при отключенном прилипании в настройках в режиме ведения линии с зажатой ЛКМ/пробелом все равно прилипает.
Возможно еще стоит отключить прилипание от узлов скрытых через фильтры, по крайней мере стандартное рисовние линий к ним не прилипает.

Тянучка на последнем сегменте когда вей замыкается не показывается ).

ОК, поправлю в следующем релизе

И то правда ) Странно, чего бы это оно. Программа подросла и начинает жить своей жизнью:)

Подсмотрю как там, сделаю.

Ох, уж эта тянучка… Я, кажется, понял, почему не сделал её сразу :slight_smile: