Плагин CommandLine для jOSM (окружности, дуги и т.п. + свои команды)

OverQuantum, дал тебе полный доступ к репозиторию команд :3

По Replace2 — имхо, правильнее изменить Replace, добавив параметр «автоматически повернуть». Либо назвать Replace, а старый — ReplaceWithRotation.

“Ух, ответственность” (c)
Спасибо, буду действовать аккуратно.

Лишний параметр - лишнее действие для всех пользователей. Переименовал свой в “Replace2 (no rotation)”.
Добавил ещё скрипты от Xmypblu, подкорректировав их.
Залил всё в master, можно тестировать.

Спасибо. Только Implode некорректно отменяется. Там сначала удаляются точки, а потом вей — а так делать нельзя. :3
Да, автор команд не должен бы о таком задумываться, и надо править сам плагин. Но пока что есть то, что есть.

Поправил в OsmData.py вот так:

    # Deleting
    for relation in self.relations.items():
      if relation[1].get(ACTION) != DELETE:
        continue
      targetStream.write(self.xmlrelation(relation))
    for way in self.ways.items():
      if way[1].get(ACTION) != DELETE:
        continue
      targetStream.write(self.xmlway(way))
    for node in self.nodes.items():
      if node[1].get(ACTION) != DELETE:
        continue
      targetStream.write(self.xmlnode(node))
    for text in self.comments:
      targetStream.write("<!--" + text + "-->\n")

Вроде ошибка перестала выпадать. Буду ещё тестировать, но если сразу видишь что это некорректно - сообщи.

P.S. Ещё до меня сегодня дошло, что разные xml-ки могут дёргать один скрипт с разными параметрами, поэтому я уберу circle.py и replace2.py, сделаю Arc с осями и ещё свой path_ortho затащу. :slight_smile:

Спасибо.
О, точно, а я и забыл, что интерфейс команд отделен от реализации. :3

Залил очередное обновление скриптов в основной репозиторий.
Из заметных изменений только инструмент Arc with axes - по просьбе luiswoo

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

Сделал альтернативный ортогонализатор на скрипте.
Возможности:

  • Лучше ловит базовое направление объектов (алгоритм path_ortho отточен в проекте обрисовки зданий Эстонии)
  • Можно зафиксировать несколько точек чтобы они не были подвинуты (нужно выделить их)
  • Можно задать базовый вектор двумя точками (как в JOSM) или вручную - дополнительно к фиксированию N точек (выделить ещё линию из двух точек с тэгом fixme=ortho2_py_base_vector)
    Таким образом будет проще рисовать здания, где есть как прямые углы, так и не прямые.
    Скриншоты и тестовые объекты тут: http://ge.tt/5QMUbC72?c

В планах: удаление промежуточных точек на прямых, удаление малых уступов и выступающих отрезков (линия туда-сюда)

Скрипт выложил пока только в моём репозитории (нужны ortho2.*)

Есть идеи как повесить скрипт на хот-кей?
UPD: Скрипт вешается на хот-кей, например, через добавление скрипта на toolbar. Себе поставил на Q вместо встроенного :smiley:

Скриншот с наглядным результатом ортогонализации при фиксировании точек

Точки со знаком STOP - были зафиксированы (выделены) перед вызовом скрипта.
(где их две - там была ещё выделена третья из другой линии, чтобы базовый вектор вычислялся)

Вот это реально здорово.
Возможно ли это протолкнуть в ядро?

Нет, это же скрипты к плагину.
Про хоткей не знаю, но двойной Enter повторяет последнюю команду.

Можно попросить в “родной” ортогонализатор добавить фиксирование многих точек.
Думаю, это не очень сложно, раз у них фиксирование двух есть. Но м мне пришлось несколько дополнительных обработок вносить в остальной алгоритм (корректировать уравнение прямой если только одна точка на ней зафиксирована; если - больше одной; выбрасывать из обработки рёбра, у которых обе точки зафиксированы и т.п.)

Хорошая штука. Именно такой возможности частенько не хватало.

Можно подцепить сей скрипт к exttools, тогда точно можно вешать хоткей.

А как подцепить? CommandLine же выбранные объекты и зависимости отправляет на stdin, а exttools, насколько я вижу, только ожидает выход от внешней проги.

Род рукой JOSM нет, точно только в понедельник смогу. И что-то вспоминаеться, что, вроде, если комманд лайн плагин вынести на панель быстрого запуска, то и на него можно хоткей навесить.

Отлично, спасибо! Работает.
Configure toolbar, добавить пункт меню, потом Edit shortcut.

Да, стандартный Q в JOSM это просто омерзительно после iD.

Можно скриншоты залить на https://wiki.openstreetmap.org/wiki/Special:Upload?
https://wiki.openstreetmap.org/wiki/Category:RU:Техническое_руководство - описание своих скриптов можно спокойно сюда складывать:
https://wiki.openstreetmap.org/wiki/RU:JOSM/Скрипты_OverQuantum

Написал скриптик для коммандлайна, который утягивает в JOSM геометрию и адрес с портала открытых данных Москвы: https://yadi.sk/d/bxPSm-0vmkURP
Устанавливается как обычно, требует OsmData.py и projections.py (идут в комплекте со стандартными командами).

О качестве данных хорошо написал BushmanK.

Что-то у меня перестал работать скриптик.
11-го числа работал, а больше не хочет.

Я добавил tData.write(sys.stdout) в ветке “Not found” и стал получать этот “Not found”, а то вообще ничего не писал.
Если вывести URL запроса в отладку и скормить его в браузер получаю {“results”:}

Рабочий address2 http://speedcam.osm.rambler.ru/address2.zip