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

И кто же возмется переписать имеющиеся скрипты на java? :roll_eyes:

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

Я думаю, геометрические скрипты переписываются тривиально, ибо там только артфметика и триногонометрия уровня 6 класса.

Поэтому я за java, она всегда есть у пользователя JOSM :3

jre - да. А вот компилятора - нет, подправить ручками чотнибудь в командах не получится. Плюс для яваскрипта или груви можно будет задавать контекст как объектик не занимаясь сериализацией/десериализацией через stdin/out.

Для поддержки груви надо добавить джарники, яваскрипт можно из javax.ScriptEngineManager запускать.

Груви тоже надо ставить, он ничем не лучше питона в этом смысле.

А вот поддержку js запилить можно, благо, это пара строчек.
Правда, не уверен в возможности передачи контекста из Java в JavaScript, это же абсолютно разные и напрочь несовместимые вещи. Как оно работает?

Передать контекст, можно http://www.ibm.com/developerworks/library/j-5things9/ более того, можно дергать яву из яваскрипта и наоборот.

С груви - всетаки добавление джарок в classpath не то-же самое что и установка еще одной среды исполнения (как в случае с питоном). При создании плагина к жосму ты и так это делаешь/можешь сделать. (Добавляешь/можешь добавить джарники третьесторонних либ).
Вот тут описано как заэмбедить груви http://groovy.codehaus.org/Embedding+Groovy

Есть ещё Jython (JAR, 8Mb)… По подключению всякой экзотики лидирует плагин Scripting:
https://github.com/Gubaer/josm-scripting-plugin
Но там нет командной строки :slight_smile:

С JS я немного копался когда делал CustomConfigurator. Там всё легко.
Даже слишком легко, ибо Main.pref.get(“password”) выполняется на ура и нормальные способы защиты не придуманы :slight_smile:

В последнее время плагин после выделения объектов на карте требует двойного Enter. Пробовал на двух ноутбуках.
JOSM 6115; CommandLine обновлен с репозитория.

Для пары дополнительных команд потребовалось написать функцию удаления линии или полигона, но понятных примеров не нашел… у кого есть пример кода, для удаления полигона(ов) ?

а лучше помогите с кодом - мой не работает и я не понимаю почему:

def deleteway(rData, nData, idn):
    for x in idn:
        way = rData.ways[x]
        for i in range(len(way[REF]) - 1):
            nodeid = way[REF][i]
            nData.nodes[nodeid][ACTION] = DELETE
    rData.write(sys.stdout)
    return 0

Давай полный листинг уж. Сейчас, похоже, ты выводишь не изменённый массив rData. Плюс не удаляешь сами веи.
А выводить надо список удаленных веев, а затем список удаленных нод.

В архиве эта функция в виде отдельной команды для CommandLine
https://dl.dropboxusercontent.com/u/18084105/deleteway.zip

P.S. нет возможности добавить в OsmData.py функцию для удаления вея или ноды по id ?
все стало бы намного проще… а то легко запутаться в последовательности шагов.

…вроде разобрался и оно даже работает, реализовал давнюю задумку по вайпу полигонов

Hind: а есть статистика, сколько и каких команд народ сам написал?

Нет желания создать папочку contrib на GitHub - для сбора сторонних команд с минимальным описанием или ссылкой на описание?

Могу поделится командой для создания сетки, использую для создания пирога или преобразую в gpx - для отрисовки по квадратам больших площадей.

Ох, я пока так и не нашел времени посмотреть.

Команда для сетки ВНЕЗАПНО будет в тему моего выступления на ОМММ. :slight_smile:
Как альтернативный путь.

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

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

команду сетки хочется доработать с помощью модуля https://pypi.python.org/pypi/Shapely - удалять лишние ячейки и разделить попавшие на границу (полигон) ячейки. Если есть опыт работы с ней и можешь дать пару подсказок, сильно поможешь… я сам долго буду разбираться.

P.S. проверь гуглопочту

Ссылка на вики сейчас ведёт на master.zip с гитхаба, и в инструкции сказано просто «распаковать».

Тогда уж проще отдельный реп создать для сторонних команд.

Я модули для команд не использую, т.к. не хочется заставлять пользователя что-то ставить сверх питона — большинство из них не смогут этого сделать.
А кроме команд для CL, я на питоне не писал. Так что вряд ли подскажу. :3

Сделал небольшие упрощения Regexp, две команды:

Tagcopy - копирует значения из одного тега в другой тег, предыдущее значение перетирается. Обычно такая задача возникает при нормализации языка name:?? → name

Tagchange - тот же Regexp, но работает только с одним явно заданным тегом, а search-replace делает только в значениях.

http://rusfolder.com/40376824

а есть у кого пример команды для работы с историей объекта?
интересует получение самого первого автора (и номер пакета правок) выделенных объектов.
желательно с сохранением в файл.

Не уметь.

нет желания попробовать написать на JavaScript для плагина Scripting ? :wink:

У меня этот плагин не работает нормально.