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

Тоже маленькая хотелка. Чтобы при рисовании дуги между двумя отрезками, конечные точки дуги и отрезков мёрджились автоматически.

Раз пошла пьянка на хотелки - то вот еще одна:

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

Я не очень понял логику, но:

  1. Сейчас я занят немного другими делами.
  2. Плагин создавался, чтобы дать всем возможность писать команды самим. :3

Возможно, через некоторое время займусь, если никто не напишет. Но у меня в очереди еще свои команды висят.

Для этого есть плагин multipoly и команда «создать мультиполигон».

Еще в соседней теме (http://forum.openstreetmap.org/viewtopic.php?pid=140402#p140402) был упомянут вот этот плагин http://wiki.openstreetmap.org/wiki/JOSM/Plugins/ContourMerge

Посмотрю но вроде она по другому работает.
Add: посмотрел - не совсем то что хотелось бы.

Что нехорошо просить других сделать то, что можешь сделать сам - оно понятно.
Будем считать что это напомниналка мне самому эту штуку написать.

О а это по ходу дела то что нужно! Спасибо.

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

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

Новая команда: Regexp.

Простейший поиск и замена по регэкспу (в т.ч. по обычным строкам). Можно быстро массировано заменять «ул.» на «улица» (выделив предварительно все объекты по Ctrl+A), и таки да, кавычки-лапки на ёлочки (искать "(.*?)", заменять на «\1» ).

Если в выражениях используется символ ", его нужно экранировать, так как он используется при передаче параметра через системную командную строку.

С кодировками проблем вроде бы быть не должно. Зато вылезло неудобство: оказывается, в коммандлайне не вставляется и не копируется текст. Буду исправлять.

А ещё люди внезапно обнаружат проблемы с восклицательным знаком. Не надо так делать. В нормальных языках есть функции типа escapeshellarg, неужели в Яве нет?

А в Java она не нужна - вместо конструирования полной строки запуска надо просто использовать методы запуска с отдельной передачей параметров.

Я чего-то не знаю? Какие еще проблемы с восклицательным знаком? Только что проверил, всё работает.

Я не трогал плагин, так что непонятно, при чем тут Java.
Плагин я поправлю немного позже.

У меня, возможно, плагин не работает. По крайней мере, при наборе команды, варианты команд не выводятся.
Отрабатывают команды, или нет, сказть не могу, т.к. Питона нет.
Система: Win XP 32, Loaded CommandLine, version 25200
Пробовал вручную обновлять, jar файлы идеентичны, ничего не изменилось.

PS: Стандартный набор команд установлен, но как уже писал, Питона нет.

Давайте логи загрузки JOSM при запуске командой навроде java -jar -Xmx1024M “josm-latest.jar”

Там должно быть много строчек вида:
file:///*/AppData/Roaming/JOSM/plugins/CommandLine/arc.xml

Проблемы возникают там, где их ждут меньше всего:

shurik@pc3 ~ $ echo !
!
shurik@pc3 ~ $ echo \!
!
shurik@pc3 ~ $ echo "\!"
\!
shurik@pc3 ~ $ echo "!"
bash: !: event not found

Hind, нет в логах этих строк, весь лог довольно короткий и умещается в 940 байт
Есть только одно упоминание о CommandLine, факт его загрузки.


...
???????? ?????? 'PicLayer' (?????? 25219)
Silent shortcut conflict: 'menu:PicLayer' moved by 'menu:Imagery' to 'Alt+B'.
???????? ?????? 'CommandLine' (?????? 25200)
???????? ?????? 'RoadSigns' (?????? 25192)
???????? ?????? 'buildings_tools' (?????? 25469)
...

Отчего коммандлайн может не найти файлы с командами? Все лежит где надо:

c:\Documents and Settings\user\Application Data\JOSM\CommandLine\

Не там.
Посмотри внимательнее. :3

Hind, мы смотрим на разные Вики по одной ссылке?

%appdata%\JOSM\plugins\CommandLine\

млин, понял, не заметил plugins, хотя, эту папку вроде сам плагин создал…

Поставил “пинтон”, плагин и команды. Загрузился:

Repository Root: http://josm.openstreetmap.de/svn
Build-Date: 2011-04-14 01:31:50
Last Changed Author: bastiK
Revision: 4021
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
URL: http://josm.openstreetmap.de/svn/trunk
Last Changed Date: 2011-04-13 22:43:46 +0200 (Wed, 13 Apr 2011)
Last Changed Rev: 4021

GET http://api.openstreetmap.org/api/capabilities... OK
Соединение с http://api.openstreetmap.org/api установлено используя протокол 0.6

загрузка модуля 'openstreetbugs' (версия 25664)
загрузка модуля 'PicLayer' (версия 25219)
Silent shortcut conflict: 'menu:PicLayer' moved by 'menu:Imagery' to 'Alt+A'.
загрузка модуля 'CommandLine' (верси  25829)
file:///C:/Program%20Files/josm/JOSM/plugins/CommandLine/arc.xml
file:///C:/Program%20Files/josm/JOSM/plugins/CommandLine/bezier.xml
file:///C:/Program%20Files/josm/JOSM/plugins/CommandLine/circle.xml
file:///C:/Program%20Files/josm/JOSM/plugins/CommandLine/copy.xml
file:///C:/Program%20Files/josm/JOSM/plugins/CommandLine/cut.xml
file:///C:/Program%20Files/josm/JOSM/plugins/CommandLine/fillet.xml
file:///C:/Program%20Files/josm/JOSM/plugins/CommandLine/mirror.xml
file:///C:/Program%20Files/josm/JOSM/plugins/CommandLine/move.xml
file:///C:/Program%20Files/josm/JOSM/plugins/CommandLine/offset.xml
file:///C:/Program%20Files/josm/JOSM/plugins/CommandLine/regexp.xml
file:///C:/Program%20Files/josm/JOSM/plugins/CommandLine/replace.xml

Попытался сделать круг. Результат:

Silent shortcut conflict: 'subwindow:conflict' moved by 'menu:Commands' to 'Alt+Shift+C'.
python circle.py 37.621895969751904,55.75326683180708 10 12
java.io.IOException: Cannot run program "python" (in directory "C:\Program Files\josm\JOSM\plugins\CommandLine"): CreateProcess error=2, ?? ??????? ????? ????????? ????
        at java.lang.ProcessBuilder.start(Unknown Source)
        at CommandLine.CommandLine.runTool(CommandLine.java:461)
        at CommandLine.CommandLine.loadParameter(CommandLine.java:399)
        at CommandLine.CommandLine$1.processKeyEvent(CommandLine.java:116)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)

        at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$000(Unknown Source)
        at java.awt.EventQueue$1.run(Unknown Source)
        at java.awt.EventQueue$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(UnknownSource)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(UnknownSource)
        at java.awt.EventQueue$2.run(Unknown Source)
        at java.awt.EventQueue$2.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(UnknownSource)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.io.IOException: CreateProcess error=2, ?? ??????? ????? ????????? ????
        at java.lang.ProcessImpl.create(Native Method)
        at java.lang.ProcessImpl.<init>(Unknown Source)
        at java.lang.ProcessImpl.start(Unknown Source)
        ... 36 more
Ошибка выполнения скрипта: python circle.py 37.621895969751904,55.75326683180708 10 12
Cannot run program "python" (in directory "C:\Program Files\josm\JOSM\plugins\CommandLine"): CreateProcess error=2, ?? ??????? ????? ????????? ????
[Ljava.lang.StackTraceElement;@bc8690[/code]