| 1 | [[TranslatedPages(revision=17)]] |
| 2 | = Модуль Scripting = |
| 3 | |
| 4 | [[PageOutline(2-4,,inline)]] |
| 5 | |
| 6 | |
| 7 | == Назначение == |
| 8 | Используйте его для автоматизации небольших задач, для которых не готовых модулей, например: |
| 9 | |
| 10 | * дополнительные проверки данных, для которых нет доступных тестов валидатора |
| 11 | * автоматический ввод данных в специфических ситуациях (например, последовательная нумерация домов) |
| 12 | * импорт из формата файлов, не поддерживаемого JOSM |
| 13 | * экспорт в формат файлов, не поддерживаемый JOSM |
| 14 | |
| 15 | == Как выполнять сценарии == |
| 16 | |
| 17 | Модуль [https://gubaer.github.io/josm-scripting-plugin scripting] позволяет запускать сценарии в JOSM. |
| 18 | |
| 19 | Их можно запускать из консоли или из файлов. Если вы выберет файлы, то в дальнейшем сценарии будут появляться в меню "Scripting". См. также |
| 20 | |
| 21 | == Как писать собственные сценарии == |
| 22 | |
| 23 | Внимательно ознакомьтесь с обоими ресурсами: |
| 24 | * http://gubaer.github.io/josm-scripting-plugin/doc/documentation.html - следуйте по всем сслыкам здесь |
| 25 | * http://gubaer.github.io/josm-scripting-plugin/apidoc/modules/josm.html - узнайте, для чего нужны классы, модули, примеси (mixins) и пространства имён. |
| 26 | |
| 27 | Чтобы писать более функциональные сценарии, чем "josm.alert(josm.menu.length);", вам следует комбинировать пример с различных страниц, например: |
| 28 | * [http://gubaer.github.io/josm-scripting-plugin/apidoc/classes/JSAction.html Создайте действие с помощью класса "JSAction"], затем добавьте его в меню, как показано на странице [http://gubaer.github.io/josm-scripting-plugin/doc/menu.html "Extending the JOSM menu and the JOSM toolbar"] |
| 29 | |
| 30 | == Детали реализации == |
| 31 | |
| 32 | Модуль включает встроенный движок сценариев для Javascript, основанный на Mozilla Rhino и |
| 33 | [https://gubaer.github.io/josm-scripting-plugin/apidoc/modules/josm.html Javascript API] для объектов приложения JOSM.\\ |
| 34 | Или же вы можете использовать любой язык сценариев, предоставляющий совместимый с JSR-223 движок, в частности, |
| 35 | [http://groovy.codehaus.org/ Groovy], [http://www.jython.org/ Python] или [http://jruby.org/ Ruby].\\ |
| 36 | |
| 37 | [https://github.com/gubaer/josm-scripting-plugin Исходный код на GitHub]. |
| 38 | |
| 39 | == Сценарии == |
| 40 | === Сценарии на JavaScript === |
| 41 | |
| 42 | * https://gist.github.com/Rub21/feb83f57a727ac0d8a34 - расширяет аббревиатуры различных типов дорог до полного названия (для США) |
| 43 | * https://gist.github.com/Rub21/47838797856566a8b6ba - изменяет регистр имён и убирает "name=S/N" |
| 44 | * https://gist.github.com/Rub21/cc055320c925c855926e - расширяет аббревиатуры (для Перу); [https://www.youtube.com/watch?v=Cpi_5dB1NLQ демонстрационное видео] |
| 45 | |
| 46 | === Сценарии на Python === |
| 47 | |
| 48 | * [wiki:Help/Plugin/Scripting/Python] - Различные небольшие сценарии, иллюстрирующие, как выполнить какое-нибудь действие. |
| 49 | * [wiki:Help/Plugin/Scripting/Python/SurfaceTypesOfRoutes] - (Интересно для веломаршрутов, кольцевых и линейных). Короткий кусок кода, но иллюстрирует интересные концепции и отчёты по данным OSM. Не вносит изменений в данные |
| 50 | * [wiki:Help/Plugin/Scripting/Python/RCN_Route_Validator] - Это уже не самый тривиальный сценарий. Он делает некоторые сложные вещи ([[http://wiki.openstreetmap.org/wiki/RU:Велосипедные маршруты|сети велосипедных узлов]] с нумерованными узлами), вносит изменения в отношения, выполняет запись в файл, который можно будет вставить в wiki. Анализирует маршруты, а также сети маршрутов или коллекции сетей маршрутов, в зависимости от того, что выделено в JOSM при запуске сценария. |
| 51 | * [attachment:ticket:7991:AutoAddIntersections.py AutoAddIntersections] (требует наличия [wiki:Plugin/UtilsPlugin2 UtilsPlugin2]) - Добавляет обработчик очереди команд, который выполняет команду AddNodesAtIntersections модуля utilsplugin2 после обнаружения команды Extrude. (См. #7991)\\ |
| 52 | Запускается один раз в сеансе JOSM. |
| 53 | |
| 54 | == Расширенные настройки == |
| 55 | |
| 56 | Выполните поиск по подстроке {{{scripting.}}} |
| 57 | |
| 58 | == Смотрите также == |
| 59 | * [wiki:/Ru:Plugins Документация к модулям] |
| 60 | |
| 61 | ---- |
| 62 | Назад к [wiki:/Ru:Help Основной странице справки] |