wiki:Ru:Help/RemoteControlCommands

Version 8 (modified by ak099, 6 years ago) ( diff )

обновление до ревизии 9

This page is missing command features. Неполный перевод.

Другие языки:

Команды удалённого управления

  1. load_and_zoom
  2. zoom
  3. import
  4. load_data
  5. open_file
  6. imagery
  7. load_object
  8. add_node
  9. add_way
  10. version
  11. Добавление, изменение и удаление тегов
  12. Другие команды

Список команд

Полный список команд и обязательных/необязательных параметров приведён на странице по адресу http://127.0.0.1:8111/ (когда JOSM запущен).

load_and_zoom

Указывает JOSM скачать область карты из API, приблизиться к скачанной области и (необязательно) выделить один или более объектов.

GET /load_and_zoom?left=...&right=...&top=...&bottom=...&select=object[,object...]

где

Параметр Обязательный / необязательный Значение
bottom О Минимальная широта
top О Максимальная широта
left О Минимальная долгота
right О Максимальная долгота
new_layer Н Если true, скачать в новый слой
layer_name Н Действует только если данные загружены в новый слой. Даёт JOSM подсказку, каким должно быть имя слоя
layer_locked Н Действует только если данные загружены в новый слой. Если true, то новый слой блокируется
download_policy Н Действует только если данные загружены в новый слой. Если never , то скачивание блокируется
upload_policy Н Действует только если данные загружены в новый слой. Если never или false, то отправка данных блокируется или препятствуется]
addtags Н Необязательный параметр для добавления тегов. Ключ и значение разделяются "=", несколько тегов разделяются вертикальной линией "|". См. подробности.
select Н Разделённый запятыми список объектов, которые должны быть выделены. Спецификаторы объектов — это комбинации слов "way", "node", или "relation" с числовым ID объекта. Пример: select=way38473,node12399,node54646. Начиная с r13212, особое значение currentselection позволяет JOSM оставить предыдущее выделение.
zoom_mode Н download | selection, по умолчанию — selection
changeset_comment Н Комментарий к пакету правок
changeset_source Н Источник пакета правок
search Н Поиск объектов в текущем слое данных. См. Поиск

Пример

Запустите JOSM (не забудьте включить функцию дистанционого управления), затем щёлкните на:

http://127.0.0.1:8111/load_and_zoom?left=8.19&right=8.20&top=48.605&bottom=48.590&select=node413602999

JOSM должен скачать область в Шварцвальде (Германия) и выделить указанную точку.

zoom

Даёт JOSM команду приблизиться к указанной области и (необязательно) выделить один или более объектов.

GET /zoom?left=...&right=...&top=...&bottom=...&select=object[,object...]

Принимает те же параметры, что и команда load_and_zoom, и использует тот же код для масштабирования и выделения. Единственное отличие — что никакие данные не скачиваются из API.

Совет: эту команду можно использовать, чтобы только выделить объекты. Просто укажите небольшую произвольную область параметрами left..bottom и добавьте список объектов для параметра select=.

import

Указывает JOSM загрузить файл .OSM и добавить его содержимое к текущему набору данных.

GET /import?url=...

где

Параметр Обязательный / необязательный Значение
url О URL файла, including patterns. Должен быть последним параметром, всё после "&url=" воспринимается, как URL, даже если содержит символы "&".
new_layer Н Если true, скачивает в новый слой
layer_name Н Действует только если данные загружены в новый слой. Даёт JOSM подсказку, каким должно быть имя слоя
layer_locked Н Действует только если данные загружены в новый слой. Если true, то новый слой блокируется
download_policy Н Действует только если данные загружены в новый слой. Если never , то скачивание блокируется
upload_policy Н Действует только если данные загружены в новый слой. Если never или false, то отправка данных блокируется или препятствуется]

load_data

(с версии 1.6) Указывает JOSM загрузить данные OSM, закодированные непосредственно в URL, а не происходящие из внешнего файла. Это подходит лишь для небольшого объёма данных (некоторые браузеры ограничивают максимальную длину URL), но быстрее (поскольку не требуется скачивание) и во многих случаях, когда нужны динамически генерируемые данные, проще для генерации.

GET /load_data?new_layer=(true/false)&layer_name=...&mime_type=...&data=...

где

Параметр Обязательный / необязательный Значение
data О XML-данные для загрузки, это должен быть URL, закодированный так, чтобы спецсимволы &, = и ? имели коды %26, %3D и %3F, соответственно. Метод JS encodeUriComponent() обеспечивает такую функциональность «из коробки».
new_layer Н Загрузить данные в новый слой
mime_type Н Mime-тип данных, по умолчанию "application/x-osm+xml", который в настоящее время является единственным поддерживаемым mime-типом, но в дальнейшем будут поддерживаться и другие
layer_name Н Имеет смысл только если данные загружаются в новый слой; даёт JOSM подсказку, какое имя дать слою
layer_locked Н Действует только если данные загружены в новый слой. Если true, то новый слой блокируется
download_policy Н Действует только если данные загружены в новый слой. Если never , то скачивание блокируется
upload_policy Н Действует только если данные загружены в новый слой. Если never или false, то отправка данных блокируется или препятствуется]

open_file

Открывает локальный файл в JOSM.

GET /open_file?filename=...

где

Параметр Обязательный/необязательный Значение
filename О Локальный файл, открываемый в JOSM (например: /tmp/test.osm)

imagery

Указывает JOSM добавить слой подложки (WMS/TMS).

GET /imagery?title=...&type=...&url=...

где

Параметр Обязательный/необязательный Значение
url О URL запроса, включая шаблоны подстановки. Должен быть последним параметром. Всё после "&url=" интерпретируется как URL, даже если содержит символы "&".
title Н Отображаемое имя слоя
type Н Тип слоя. Возможные значения: wms, tms и bing
(с версии RemoteControl 1.3)
cookies Н
min_zoom Н Минимальный масштаб
(с версии RemoteControl 1.4)
max_zoom Н Максимальный масштаб. Для более высоких уровней просто увеличивается изображение, доступное в максимальном масштабе
(с версии RemoteControl 1.4)

Обязательный параметр: url Необязательные параметры: title, type, cookies, min_zoom, max_zoom

Примеры

  • TMS-слой "osm" http://tile.openstreetmap.org/{zoom}/{x}/{y}.png

http://localhost:8111/imagery?title=osm&type=tms&url=http://tile.openstreetmap.org/%7Bzoom%7D/%7Bx%7D/%7By%7D.png

  • WMS-слой "landsat" http://irs.gis-lab.info/?layers=landsat&SRS={proj}&WIDTH={width}&HEIGHT={height}&BBOX={bbox}

http://localhost:8111/imagery?title=landsat&type=wms&url=http://irs.gis-lab.info/?layers=landsat&SRS=%7Bproj%7D&WIDTH=%7Bwidth%7D&HEIGHT=%7Bheight%7D&BBOX=%7Bbbox%7D

load_object

Указывает JOSM скачать объекты с заданным ID.

GET /load_object?new_layer=true|false&objects=...

где

Параметр Обязательный/необязательный Значение
objects О Разделённый запятыми список ID объектов, например, "n1234,n1235,w84,r958493"
new_layer Н Если true, скачивает в новый слой
addtags Н Необязательный параметр для добавления тегов. Ключ и значение разделяются "=", а несколько тегов могут быть разделены вертикальной линией "|". См. подробнее.
relation_members Н Если true, скачиваются также объекты, являющиеся участниками отношений.
referrers Н Если true, скачиваются также ссылающиеся объекты, то есть родительские отношения, а для точек дополнительно родительские линии. (с r6782)
layer_name Н Имеет смысл только если данные загружаются в новый слой; даёт JOSM подсказку, какое имя дать слою
layer_locked Н Действует только если данные загружены в новый слой. Если true, то новый слой блокируется
download_policy Н Действует только если данные загружены в новый слой. Если never , то скачивание блокируется
upload_policy Н Действует только если данные загружены в новый слой. Если never или false, то отправка данных блокируется или препятствуется]

Пример

http://localhost:8111/load_object?new_layer=true&objects=w106159509

add_node

Указывает JOSM создать новую точку с заданными координатами.

Примечание: это действие требует права Создать новые объекты, которое не включено в настройках по умолчанию.

GET /add_node?lon=...&lat=...

где

Параметр Обязательный/необязательный Значение
lon О Долгота точки
lat О Широта точки
addtags с v1.5 Н Необязательный параметр для добавления тегов. Ключ и значение разделяются "=", а несколько тегов могут быть разделены вертикальной линией "|". См. подробнее.

Пример

http://localhost:8111/add_node?lon=13.3&lat=53.2

add_way

Указывает JOSM создать новую линию с точками, создаваемыми в заданных координатах.

Примечание: это действие требует права Создать новые объекты, которое не включено в настройках по умолчанию.

GET /add_way?way=lat1,lon1;lat2,lon2;...

where

Параметр Обязательный/необязательный Значение
way О Пары координат (широта, долгота), разделённые точками с запятой.
addtags с v1.5 Н Необязательный параметр для добавления тегов. Ключ и значение разделяются "=", а несколько тегов могут быть разделены вертикальной линией "|". См. подробнее.

Пример

http://localhost:8111/add_way?way=53.2,13.3;53.3,13.3;53.3,13.2

version

Эта команда возвращает текущую версию протокола интерфейса удалённого управления. Разработчики могут использовать её для запроса, запущен ли экземпляр JOSM, а также для определения, доступна ли требуемая функциональность на клиенте.

GET /version[?jsonp=callback]

где

Параметр Обязательный/необязательный Значение
jsonp Н обратный вызов Jsonp для старых браузеров, не поддерживающих ​Cross-Origin Resource Sharing (CORS)

Команда возвращает объект json, содержащий идентификатор приложения, который всегда имеет вид: "JOSM RemoteControl", major и minor номера версии. Совместимые изменения протокола увеличивают minor номер. Несовместимые — увеличивают major номер. То есть клиентское приложение, знающее протокол версии 1.0, всё ещё может общаться с JOSM, имеющим 1.1. Но не гарантируется его работа с 2.0. Таким образом, клиент должен проверить major номер версии.

Типичный вывод выглядит так:

{
   "protocolversion": {
      "major": 1, 
      "minor": 0
   }, 
   "application": "JOSM RemoteControl"
}

Для более старых браузеров, в которых не реализована технология Cross-Origin Resource Sharing (CORS), команда обеспечивает возможность jsonp-отклика. Load the URL in a script tag and supply the name of a callback that will receive the JSON data.

Далее приведён образец кода, проверяющего поддержку CORS и использующего вариант отклика JSONP.

// in addition to the CC-BY-SA of the wiki feel free to use the following source for any purpose without restrictions (PD)
// credits and additions appreciated: https://wiki.openstreetmap.org/wiki/User:Stephankn

function checkJOSM(version){
   alert(version.application + " uses protocol version " + version.protocolversion.major + "." + version.protocolversion.minor);
   // do something useful, maybe showing edit button
}

var url = "http://127.0.0.1:8111/version";
var useFallback = false;
// currently FF3.5, Safari 4 and IE8 implement CORS
if (XMLHttpRequest) {
   var request = new XMLHttpRequest();
   if ("withCredentials" in request) {
      request.open('GET', url, true);
      request.onreadystatechange = function(){
         if (request.readyState != 4) {
            return;
         }
         if (request.status == 200) {
            checkJOSM(eval('(' + request.responseText + ')'));
         }
      };
      request.send();
   }
   else if (XDomainRequest) {
      var xdr = new XDomainRequest();
      xdr.open("get", url);
      xdr.onload = function(){
         checkJOSM(eval('(' + xdr.responseText + ')'));
      };
      xdr.send();
   } else {
      useFallback = true;
   }
}
else {
   // no XMLHttpRequest available
   useFallback = true;
}

if (useFallback) {
   // Use legacy jsonp call
   var s = document.createElement('script');
   s.src = url + '?jsonp=checkJOSM';
   s.type = 'text/javascript';
    
   if (document.getElementsByTagName('head').length > 0) {
      document.getElementsByTagName('head')[0].appendChild(s);
   }
    
}

Добавление, изменение и удаление тегов

Попробуйте этот пример: http://localhost:8111/load_and_zoom?addtags=wikipedia%3Ade=Weiße_Gasse%7Cmaxspeed=5&select=way23071688,way23076176,way23076177,&left=13.739727546842&right=13.740890970188&top=51.049987191025&bottom=51.048466954325. (Works also with the zoom-command)

Пользователь должен проверить теги и выделение перед применением тегов к выделенным объектам. Если у каких-нибудь объектов уже есть тег, он будет заменён.

С версии протокола 1.5

  • команды add_node и add_way поддерживают параметр addtags
  • можно использовать символ = в значении, и все пробелы в начале/конце будут обрезаны.

http://localhost:8111/add_node?lon=13.3&lat=53.2&addtags=natural=tree%7Cname=%20%20%20==Great%20Oak== (создаёт точку с natural=tree и name="==Great Oak==")

  • Если найдено пустое значение, тег будет удалён из объектов (checkbox-confirmation is needed)

http://localhost:8111/load_and_zoom?addtags=wikipedia%3Ade=%7Cmaxspeed=&select=way23071688,way23076176,way23076177,&left=13.739727546842&right=13.740890970188&top=51.049987191025&bottom=51.048466954325.

Другие команды

Удалённое управление позволяет различным модулям добавлять дополнительные команды. The other registers a RequestHandler class and specifies a command to be handled by this class. The command syntax has to be defined by the other plugin.

Модуль reverter с версии 27091 использует эту функцию.


Назад к Удалённое управление
Назад к Настройки
Назад к Основной странице справки

Note: See TracWiki for help on using the wiki.