Как начать работу в JOSM

o5ez7cfrnx1xpr8veroh-hh7apq.jpeg

В предыдущей статье были рассмотрены основополагающие принципы картографирования для OpenStreetMap, а также веб-редактор iD. А здесь мы рассмотрим настольный редактор JOSM. Его выбирают продвинутые пользователи OpenStreetMap. Причем выбирают осознанно. При запуске приложения не запускается процесс обучения, но доступны хорошие обучающие материалы, в том числе на русском языке. Ниже рассмотрим, как начать работать в JOSM.
Чтобы начать редактирование в JOSM, необходимо скачать jar-файл с сайта josm.openstreetmap.de и установить его. В окне настроек можно указать язык, настроить авторизацию и скачать необходимые модули. Одними из наиболее удобных и широко используемых модулей являются:

  • Buildings_tools — инструмент для прорисовки зданий. Позволяет рисовать прямоугольники или круги, нарисованной фигуре проставляется по умолчанию тег building=yes;
  • Utilsplugin2 — добавляет несколько утилит, упрощающих редактирование геометрических фигур, а также расширяющих возможности выборки;
  • Reltoolbox — упрощает процесс работы с отношениями;
  • Imagery_offset_db — позволяет получить/сохранить ближайшее к месту редактирования смещение снимка;
  • HouseNumberTaggingTool — позволяет достаточно быстро тегировать адресную информацию для зданий, номера которых идут с определенным шагом.

Подробную информацию о настройке и начале работы с JOSM можно почерпнуть из видео на сайте josm.ru.

Итак, мы сделали первоначальную настройку редактора. Теперь подготовим рабочую область для рисования. Сперва надо в левом верхнем углу интерфейса найти кнопку с зеленой стрелкой вниз — она позволит выбрать область для редактирования. В открывшемся модальном окне ставим галочки в разделе «Источники и типы данных», чтобы скачать данные OpenStreetMap, GPS-треки и заметки. Прямоугольником на карте выделяем область, которую хотим редактировать (перемещение по карте в JOSM осуществляется с зажатой правой клавишей мыши) и кликаем на кнопку «Скачать».

18f46f7162e9cdb289b53fd8525d0394.png

Если была выделена слишком большая область, JOSM выдаст сообщение о неудачном запросе (но GPS-треки и заметки будут загружены).
5408e269f1af54f713cef609780a2318.png

Итак, мы скачали данные, треки и заметки. На основной части экрана на черном фоне отображаются разноцветные линии и полигоны, желтыми квадратиками или пиктограммами отображены точки. Пучки розовых линий представляют GPS-треки, а зелеными (открытые) и красными (решенные) пинам обозначены заметки.
3aacfe7dc5fd3105c27a00fd69e5af08.png

В правой части экрана располагается панель слоёв, в которой можно управлять их видимостью и порядком отображения. Добавим слой со спутниковыми изображениями: в главном меню развернем пункт »Слои» и выберем слой, например,»Снимки Maxar Premium (Beta)». На экране и в списке слоев появится слой со спутниковыми изображениями.
12fc69039f58f3c680d691e8e02c8f63.png

Настроим смещение снимка, кликнув в верхней панели инструментов на иконку с двумя красными стрелками.
179441972dbbae81a1679e845f946fc9.png

Теперь рабочая область готова к рисованию. Начнем, как и в редакторе iD, с добавления здания. В JOSM есть два основных режима редактирования: режим выбора — горячая клавиша S или верхняя кнопка »Выделять, перемещать, масштабировать и вращать объекты» на панели инструментов слева; и режим рисования — горячая клавиша A или кнопка »Рисовать точки» на панели инструментов слева.

Здание часто представляет собой замкнутый многоугольник. В большинстве случаев жилой дом имеет форму, близкую к прямоугольной. Чтобы нарисовать ровный прямоугольник при установленном модуле Building_tools, достаточно нажать горячую клавишу B (от слова Building) и щелчками мыши на экране растянуть длину и ширину прямоугольника. Если же этот плагин не установлен, то можно начать редактирование горячей клавишей A (от слова Add), нарисовать многоугольник (двойной щелчок заканчивает рисование) и нажать горячую клавишу Q, которая спрямит углы. То же самое можно сделать, не пользуясь горячими клавишами, а нажимая на соответствующие кнопки в интерфейсе.

fd9e9d85889b4b8f9dc48659c121569b.png

Более сложные формы можно рисовать несколькими прямоугольниками, выделить их все, сменив клавишей S режим редактирования на режим выделения, и горячими клавишами Shift+J объединить в один полигон.
18604d09f7c4271e4fc4cb62bc21872d.png

Другой способ — нарисовать ограничивающий прямоугольник, клавишей A переключиться в рисование узлов, в местах изменения формы добавить узлы, а затем горячей клавишей X «выдавить» или «вытянуть» необходимую форму.
eb9a85f8a5a0f015fa1e80b922a6a7b8.png

Завершив рисование фигуры, необходимо проставить ей теги. Панель тегов по умолчанию располагается в правой части экрана, под панелью слоев. Теги можно добавлять, изменять и удалять, нажимая соответствующие кнопки.
06dcc1f2160649e14dff89a881bd8b93.png

Основной тег для многоугольника здания — building. В соответствии с назначением здания необходимо проставить корректное значение этого тега. В простых случаях назначение здания совпадает с его использованием. Так, для многоквартирных домов используется значение apartments, для частных жилых домов — detached, школы обозначаются school, а детские сады — kindergarten. Чуть более замысловатым является тегирование зданий, использование которых не совпадает с их назначением: пример, рассмотренный в предыдущей статье — здание, построенное как склад, в настоящее время используется как жилой дом. В этом случае здание тегируется как склад (building=warehouse), текущее использование задается тегом building:use=residential. Как быть, если, например, бывшее здание больницы используется теперь как библиотека? Ответ прост: здание должно иметь теги building=hospital и amenity=library. В сложных случаях, когда назначение дома определить не удается, применяется тегирование building=yes.

Итак, тип объекта был установлен. Теперь нужно указать адресную информацию. Она обозначается тегами с префиксом addr:. Минимально необходимая адресная информация для дома — это его номер и название улицы, обозначающиеся тегами addr:housenumber и addr:street соответственно. При указании номера дома, состоящего не только из цифр, следует руководствоваться следующими правилами: литеры пишутся слитно с номером дома, а номера корпусов, строений, сооружений, владений и т.п. указываются через пробел. Например, номер дома 8А, корпус 1, строение 3 должен быть указан как 8А к1 с3.

fa94838d7a3c021a98e2599b930c5e42.png

Наиболее распространенным типом адресации является адресация по улицам, но как быть в случае, когда адрес относится к определенной территории, как, например, в Ангарске, Набережных Челнах или Троицке? В таких случаях необходимо использовать тег addr:place, который заменяет тег addr:street (то есть недопустимо одновременное использование тегов addr:street и addr:place для одного объекта).
c41fd3c6f66b4a671ba61e9a857f4d91.png

Следующий сложный случай в адресации — угловые дома, имеющие несколько адресов (как правило, два). К сожалению, в данном случае сообщество не пришло к единому мнению, как же правильно тегировать такие дома. Наиболее распространенным вариантом является расположение нескольких адресных точек внутри полигона здания без адреса, однако в некоторых городах уже могла сложиться определенная схема тегирования, так что следует консультироваться с местными картографами.

Хорошим тоном будет указать почтовый индекс, задав тег addr:postcode.

Отдельными узлами на полигоне здания обозначаются входы в дом, тегируемые с помощью entrance. Как мы писали раньше, довольно часто для жилых домов можно определить количество и расположение подъездов по спутниковым снимкам: на крышах зданий видны лифтовые шахты и выходы вентиляционных труб. Однако следует помнить, что в большинстве случаев, особенно для высотных домов, крыша здания смещена относительно реального положения подъезда, поэтому необходимо также ориентироваться и по другим, косвенным признакам — козырькам подъездов, входным дорожкам.

dadf448755ead26d0f03481ab1cba2fe.png

На рисунке выше видно, что дома 14 и 18 имеют два подъезда, а в доме 16А их не менее пяти.

Вход в подъезд обозначается как entrance=staircase (за таким входом обычно скрывается лестница), черный вход — entrance=service, пожарный выход обозначается как entrance=emergency, вход в частный дом или квартиру с улицы — entrance=home. Если есть сомнения, как обозначать конкретный вход, допускается использование общего значения тега yes. Порядковый номер входа указывается с помощью тега ref. Для указания номеров квартир используется тег addr:flats. Указание диапазона квартир производится с помощью дефиса: addr:flats=1-28.

05539c5f6eff44ed3178380f883e3154.png

ca38567d0223bd87201a522aab7e5568.png

В нестандартных ситуациях, когда нумерация прерывается, диапазоны квартир в подъезде указываются через точку с запятой: addr:flats=1-12;14;16-20.

Дополнительно можно указать инженерную информацию о здании — этажность (тег building:levels), форму крыши (roof:shape), материал фасадов здания и его крыши (теги building:material и roof:material соответственно), цвет внешних стен и крыши здания (теги building:colour и roof:colour). Однако новичкам следует с осторожностью указывать такую информацию для сложносоставных зданий, имеющих различную этажность и меняющуюся форму крыши. Для таких зданий в первом приближении можно отрисовать общий контур здания, проставить максимальную этажность. Для внесения более точных характеристик здания необходимо разделять его на элементарные части building:part, из которых собирается финальное отношение c типом multipolygon с тегом building. Вот, например, как выглядит собор Василия Блаженного в Москве:

0aed559b2c4bf3bf511bb54a6d24ccdc.png

Возможно, кому-то покажется, что отношения — это очень сложно. Это и впрямь непросто, но стоит их освоить, и станет понятно, насколько они удобны и упрощают жизнь картографам. Разберем один случай, не такой изощренный, как представленный выше собор. Для работы понадобятся модули utilsplugin2 и reltoolbox. Удостоверьтесь, что они установлены. Наш случай — это многоквартирный дом переменной этажности в жилом квартале «Влюблино» в Москве. Находится он по адресу улица Цимлянская, дом 3 корпус 2. Дом состоит из двух отдельно стоящих зданий, которые имеют секции с разной этажностью. Начнем с того, что нарисуем контуры отдельных зданий.

98bb035d988ff46e5f1ff04cec5ea4e7.pngf53b07a6b53b94c497d66511ae6051e5.png
Теперь прорисуем линии, разделяющие разноэтажные секции дома. Выделив полигон здания и входящие в него перемычки и нажав горячую клавишу Q, можно скорректировать прямые углы, если это необходимо. Следующий шаг — разбить цельные полигоны теми перемычками, которые мы нарисовали. Для этого выделяем полигон и входящую в него перемычку (важно делать это по одной) и нажимаем горячие клавиши Alt+X, либо на вкладке »Еще инструменты» находим пункт »Разрезать объект».

94b3707029ca62b4b47ac9ab4d2d8ed8.png8729e46f32edba9e5257a36a39450ef8.png
Выделим получившиеся 5 полигонов и проставим им тег building:part=yes. Добавим также тег, описывающий форму крыши — roof:shape=flat. Теперь, выделяя каждый отдельный полигон, проставим ему количество этажей building:levels, используя фотографические изображения зданий. Для трехсекционного здания это будут 1, 9 и 17; для двухсекционного — 9 и 17.

b4ac5fede4e155eabc31235885b8c1cf.jpg

6be773ce0d88bef3b6201b5262341b5b.jpg

Теги с адресной информацией добавляются к общему зданию, а не к его частям, на данном этапе адрес указывать не нужно. Также для общего здания должна быть указана максимальная из указанных в building:part этажность.

Выделим снова все пять полигонов. В панели Relation Toolbox, расположенной в правой части экрана, нажмем на кнопку »Multi». Эта операция разбила полигоны на отдельные сегменты и создала отношения на месте бывших полигонов building:part. При этом все заданные теги сохранились в соответствующих отношениях. Соберем итоговый мультиполигон для всего здания, он должен соответствовать тем контурам, которые мы нарисовали в самом начале. И поскольку два отдельных здания относятся к одному адресу, они должны быть участниками одного отношения (в нашем случае — одного мультиполигона). Выделив линии, образующие два внешних контура здания, снова нажимаем кнопку »Multi» в панели Relation Toolbox и видим появившуюся у контуров зданий желтую обводку.

e1bd54a0000a10d3123a38c7851d9add.pngaefd8769edebd18b210668bcac238480.png

В панели Теги добавляем к уже имеющемуся тегу type=multipolygon теги building=apartments, building:levels=17, addr:street=Цимлянская улица, addr:housenumber=3 к2.

Описанный способ не является единственно верным, возможности OpenStreetMap позволяют один и тот же случай отрисовать несколькими способами. Если нет уверенности, как правильно нарисовать сложное многоэтажное здание, лучше задать вопрос в Telegram-сообществе OpenStreetMap, где бывалые осмеры подскажут, как быть в данной ситуации, и поделятся ссылками на места в интернете, где описаны правила или договоренности на интересующую тему.

Итак, первый этап пройден, дом нарисован. Теперь хорошo бы нарисовать окружающую инфраструктуру. Проезды, обозначенные знаками »Жилая зона», имеющие название, тегируются как highway=residential + living_street=yes, неименованные внутридворовые проезды обозначаются как highway=service + living_street= yes. Пешеходные дорожки тегируются highway=footway. Детские площадки обозначаются leisure=playground, площадки для выгула собак — leisure=dog_park, спортивные площадки — leisure=pitch, желательно с указанием вида спорта (тег sport), парковки — amenity=parking.

Когда с оцифровкой закончено, наступает время отправить свои правки на сервер OpenStreetMap. Для этого на верхней панели инструментов находим кнопку с зеленой стрелкой вверх. В этот момент происходит валидация сделанных правок, и если что-то сделано некорректно, JOSM выведет об этом сообщение.

a4fb5fb0bd64fd7cd4380486ad9fd26a.png

При этом нужно остановить отправку данных на сервер и исправить ошибки и кажущиеся вам разумными предупреждения, следуя подсказкам на панели »Результаты проверки», располагающейся в правой части экрана. После работы над ошибками снова нажимаем на кнопку с зеленой стрелкой вверх. Если валидация пройдена успешно или вы осознанно нажали на кнопку »Продолжить отправку», открывается модальное окно «Отправить на сервер».
4bc3ff201597e93f44a21a9e53743c2b.png

В новом окне необходимо указать комментарий к своей правке, описывающий проделанные изменения. Также нужно указать источник данных. Активировав флаг »Автоматически брать источник из текущих слоёв», можно автоматически заполнить эту строку названием слоёв спутниковых снимков, использованных при оцифровке. Если данные были получены путем обхода, то указываем survey или дописываем через точку с запятой, например, Bing; survey. Нажимаем кнопку »Отправить изменения на сервер» и наслаждаемся своими изменениями на карте OSM.

Если на одном участке работало несколько картографов, в момент валидации может появиться окно с конфликтом правок, но это уже совсем другая история.

В заключение


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

Мы рассмотрели один из самых частых типов отношений — multipolygon. Мир отношений обширен и позволяет удобно отрисовывать сложные объекты или объекты, частично состоящие из участков соседних объектов. И пусть на первый взгляд отношения кажутся страшными, потому что не являются элементарной геометрической формой, однако они позволяют описывать реальность более детально.

© Habrahabr.ru