User:Zverik/Practical Highways

From OpenStreetMap Wiki
Jump to: navigation, search

Хорошо отрисованные дороги — совсем не то же, что хорошо выглядящие на карте osm.org. На последней отображается всего два из минимум пяти необходимых атрибутов. Поэтому первым делом нужно забыть про эту карту (и, в общем-то, про все остальные рендереры), и рисовать только ради базы данных. Так мы не даём ограничивать себя каким-то сторонним приложениям, отдаваясь работе над картой на сто процентов.

Уровни детальности

Есть несколько уровней отрисовки дорог в OpenStreetMap.

Нулевой уровень: есть трек на сервере (не забывайте загружать треки после каждой поездки!). Он обрисован как дорога неизвестного качества и актуальности, highway=road. Обрисовав достаточно количество треков, можно охватить карту дорог целиком и сделать несколько предположений для следующего этапа.

Первый уровень: дороги классифицированы (от path до motorway). На этом уровне подразумевается, что все дороги присутствуют в реальности, и известна их относительная загруженность и что они связывают, что даёт основу для определения взаимной важности.

Второй уровень: дорогам проставлены номера ref=* (возможно, с int_ref=* и прочими), а улицам — названия name=*. Этот уровень отображается в основных стилях карт и более-менее достаточен для адресного поиска и планирования маршрута. Тем не менее, любая печатная карта даст фору нашей карте, где дороги нарисованы лишь на втором уровне детальности.

Третий уровень: указано покрытие surface=* и полосность lanes=* дорог. Это та детальность, которую нам дают бумажные карты — например, карты генштаба. Она позволяет планировать велосипедные и пешие туристические маршруты, а с учётом большей достоверности данных OSM делает нашу карту лучше обычных.

Четвёртый уровень: дополнительные параметры дорог, такие как освещённость lit=*, ограничения скорости maxspeed=* и высоты maxheight=*, качество покрытия smoothness=* или surface:grade=*. Некоторые из этих атрибутов важны для расчёта маршрута для конкретных транспортных средств, некоторые (вроде lit=*) пока просто ради красоты и полноты данных. Все эти параметры отсутствуют на абсолютном большинстве карт, но их несложно собрать, двигаясь по дорогам самостоятельно.

В этой статье я опишу, как собственные наблюдения с пассажирского сиденья автомобиля или из седла велосипеда перенести вдоль трека на карту. К сожалению, в нашем проекте все схемы тегирования субъективны, и приведённая не является догмой, или даже сколько-нибудь преобладающей, а лишь отражает взгляды и методы, исповедуемые автором.

Дорожная сеть

Прежде всего, у нас есть соглашение о типах дорог, в котором подробно расписано, что каждый тип значит. Поэтому я пропущу описание типов primary и выше, и начну вообще с середины.

Тип Когда использовать
unclassified Самый главный и часто встречающийся тип. Им обозначаются дороги, по которым можно добраться до какого-нибудь населённого пункта или дачного посёлка. Помните, что вид и качество дороги на значение highway не влияют, поэтому в России этим типом часто обозначают обычную грунтовку, порой даже слабо проходимую во время дождей. Главное — что она является главным (или единственным) способо добраться до деревни.
track А так обозначаются дороги, которые не ведут в населённые пункты, а лежат просто так: для тракторов в поле, для лесовозок в лесу, для подъезда к озеру или вышке сотовой связи, для охотников и рыболовов. Чаще всего это грунтовки, но встречается и асфальт.
tertiary Это как unclassified, только чуть важнее: дорога используется для подъезда к нескольким, пяти и более, деревням. От неё в стороны могут расходиться unclassified к непосредственно населённым пунктам, а может примыкать и другая tertiary.
secondary По аналогии с tertiary, эти дороги соединяют ещё большие кусты деревень, чаще — посёлки и города. Это либо загруженная артерия через несколько десятков деревень, либо важная связь между дорогами класса primary или выше.
residential
pedestrian
Дороги внутри населённых пунктов, имеющие название. Хотя иногда, очень редко, названий может и не быть. Вдоль таких улиц обычно стоят дома. pedestrian отличается только тем, что по ним запрещено движение моторных транспортных средств (пешеходные улицы).
service Дорожки для подъезда к чему-нибудь: к заправке, к стоянке, к амбару, к дому. Очень желательно уточнять тип проезда: service=living_street — дворовый проезд, service=driveway — подъезд к частным владениям, и так далее.
cycleway Только дороги, обозначенные круглым знаком с велосипедом на синем фоне. Если вдоль шоссе идёт удобная заасфальтированная дорожка, по которой любят кататься велосипедисты, одно это ещё не делает её велодорожкой.
path Тропинки или иные натоптанные дорожки, иногда слегка укреплённые. Возникают стихийно. За пределами населённых пунктов у нас всё, что не автомобильное, всё path.
footway Облагороженные пешеходные дорожки. Уложены плиткой, асфальтом или мелким гравием, достаточно широкие и очевидно предназначенные для прогулок. По этой логике мостики в лесу вне города могут обозначаться как footway, в то время как тропинки до и после мостика рисуются как path: решайте сами.

Важно помнить, что дорога класса X как минимум одним концом должна примыкать к дороге классом не ниже X, то есть, чтобы если из карты убрать все дороги класса ниже X, сеть оставшихся была бы связной, без висящих в пустоте огрызков. Порядок классов такой:

{path,footway,cycleway} -> track -> service -> {unclassified,residential,pedestrian} ->
tertiary -> secondary -> primary -> trunk -> motorway

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

Индексы

Значение тега ref=* и подобных, конечно, можно найти в пути, на соответствующих знаках и указателях. Но на практике оказывается, что на таких знаках в России экономят, и куда эффективнее искать индексы в сети:

Помните, что европейские индексы записываются в int_ref латинскими буквами через пробел: E 95, азиатские — туда же латинскими буквами без пробела: AH8. Индексы российских дорог пишутся русскими буквами без пробела, обычно в тег ref: М20, но если он уже заполнен индексом более высокого уровня (федеральный -> региональный -> межмуниципальный -> местный), то нужно использовать loc_ref или reg_ref.

Фотомаппинг

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

Calibrate800.jpg

Главное, чтобы на нём были видны секунды. В окне загрузки фотографий JOSM нажмите «использовать фото часов», выберите такой снимок, приблизьте время колёсиком мышки и введите его в соответствующее поле. Временную зону поставьте в +0:00, я не очень понимаю смысл в ней.

Если ваш навигатор не показывает время на экране (например, это логгер), фотографии можно привязать на глаз. Для этого в дороге на большой скорости сделайте фото перекрёстка, хорошо заметного на спутниковом снимке. Затем подгрузите спутниковый снимок, привяжите его по треку, и в окне загрузки фотографий для трека нажмите «Ручная привязка». Там нужно двигать фотографии вдоль трека, пока фото перекрёстка не попадёт в его точку на снимке.

Владельцам телефонов на андроиде или WM всю связку заменит единственная программа OSMtracker: она умеет писать трек, привязывать к нему фотографии, ставить точки с комментариями и записывать звук.

Тех, кто за рулём, хочу предупредить: фотоаппарат или телефон даже просто держать в руке можно, если ваша скорость ниже 15 км/ч! Это касается водителей всех транспортных средств, но особенно — автомобилистов. Можно убеждать себя, что опыт и все дела, но на наших дорогах неожиданная херня происходит куда чаще, чем можно логически обосновать, поэтому лучше не искушайте судьбу и найдите попутчика, согласного всю дорогу держать в руках фотоаппарат. Ну, или притормаживайте в интересных местах, иногда до остановки. Альтернатива — диктофон, про него читайте ниже.

Покрытие и полосность

Самое основное, что будет попадать на большинство путевых фотографий — это дорога. С фото можно различить два основных её атрибута: ширину и покрытие. Например, вот на этой фотографии автобусной остановки без труда можно различить, что фотограф едет по асфальтовой двухполосной дороге, surface=asphalt lanes=2:

Asphaltbusstop.jpg

Но когда характеристики дороги меняются, нужно немедленно сделать её снимок. За городом количество полос, обычно, не меняется (и почти всегда равно двум, кроме грунтовок), а покрытие вполне может, и нельзя забывать про фотографии. Например, после нескольких километров грейдера фотограф выехал на деревянный мост:

Surfaceequalswood.jpg

surface=wood
lanes=1
bridge=yes
layer=1

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

В городе на некоторых улицах подсчёт полос затрудняется трамвайными рельсами посередине дороги. По правилам, на них можно въезжать при объезде, обгоне, повороте налево или развороте, а также когда все остальные уже заняты — по сути, они являются дополнительной полосой, и включаются в подсчёт для lanes. Исключение составляют случаи вроде этого, когда трамвайные пути отделены сплошной линией разметки (или бетонными блоками):

todo: картинка трамвайных путей, отделённых сплошной линией

Покрытие в большинстве случаев несложно определить: отличить асфальт от гравия может каждый. Основные типы перечислены в этой таблице (смотрите также описание тега surface=*):

Покрытие Тег Что это
асфальт asphalt Смесь битума с гравием и песком, в теории — самое лучшее покрытие (пока не деградирует). Имеет характерный серый цвет, со временем покрывается трещинами и местами проваливается. В зависимости от количества примесей может быть как идеально гладким, так и бугристым, для лучшего сцепления колёс с поверхностью.
грейдер (гравийка, «дорога
с улучшенным покрытием»)
compacted Покрытие из смеси песка и мелкого щебня, часто превращающегося в «стиральную доску». Требует периодического выравнивания специальной техникой (бульдозерами, грейдерами) и в регионах заменяет асфальт, потому что проще в обслуживании и не так жутко ехать, когда обслуживания нет. Отличается от грунтовок шириной (почти всегда — две полосы) и качеством (куда ровнее и не заливается в дождь).
бетонка concrete В нашей стране бетонкой почти всегда называют дорогу из бетонных плит, выложенных встык. Со временем края плит крошатся, и на стыках транспортное средство неприятно трясёт. Правильная технология укладки требует покрытия бетона асфальтом, но такая дорога уже классифицируется как асфальтовая, хотя в народе и может называться бетонкой (например, А120 в Ленинградской области, А107 и А108 в Московской).
гравийка (щебёнка) gravel Выровненная куча гравия. Гонять на автомобиле чревато выбитыми стёклами, на велосипеде вообще лучше не соваться. Размер камней может варьироваться, обычно — несколько сантиметров в диаметре.
брусчатка (булыжник) cobblestone Крупные гладкие камни (порядка десяти сантиметров), присыпанные землёй. Обычно встречается в исторических частях городов, но иногда такое покрытие можно найти и в лесу, где грунтовка или грейдер идут по трассе древней укреплённой дороги.
дерево (гать) wood Деревянные мосты, как на фотографии выше, — самый очевидный пример, но за городом так же обозначаются брёвна, поваленные поперёк дороги, чтобы лесовозы не тонули.
грунтовка ground
sand
mud
grass
Часто колея посреди леса или поля, но может быть широкой дорогой, почти грейдером, но без гравия (и такие дороги отлично размываются тракторами, лесовозами и просто дождём — хороший кандидат на surface=mud). Нередко грунтовки укрепляются небольшим количеством щебня. Тип покрытия (земля, песок, грязька или трава) не всегда легко определить (песок часто перемешан с землёй и прочими укрепляющими элементами, а грязь летом вполне крепка), поэтому в случае сомнений используйте ground: это как бы значение по умолчанию для грунтовки.

Свет

С наступлением темноты, или просто зимой, мапить характеристики дороги не очень удобно: не видать. Зато самое время собирать данные, которые как бы никому не нужны, но интересны и красиво выглядят на карте: освещённость. Для этого хитростью или мольбами занимайте пассажирское кресло автомобиля, устанавливайте GPS и берите в руки фотоаппарат.

Загородные дороги почти целиком тёмные, за исключением некоторых светлых отрезков. Для удобного рисования каждого нужно сделать четыре фотографии: слегка заранее, чтобы понять, что дальше будет; фотографию первого фонаря; незадолго до окончания светлого участка и фото последнего фонаря. По этим снимкам можно однозначно понять, что это за яркие пятна, и правильно разметить дорогу (lit=yes для освещённых участков и lit=no для тёмных).

Редкий фотоаппарат справится с ночной съёмкой, поэтому параметры съёмки лучше настроить так, чтобы выдержка была минимальной, ценой яркости и чёткости (т.е. ISO и диафрагму на максимум, ручное задание выдержки). На фотографиях будут цветные пятна, но большего и не нужно: цепочка жёлтых точек в контексте съёмки фонарей считывается однозначно.

Вдали видна цепочка фонарей. Обратите внимание на угадывающиеся очертания неработающих фонарей вблизи
Первый фонарь из цепочки
Четыре фонаря до конца освещённого отрезка. Пропуски в один-два столба можно игнорировать, как и один-два отдельно стоящих фонаря
Последний фонарь

Знаки и точки

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

Отношение type=destination_sign
destination=Новожилово
distance=3.5
highway=bus_stop
public_transport=platform
name=Вартемяги, почта

Почти все фотографии в редакторе превращаются в точки — на дороге или около неё. Есть специальная страница с соответствиями дорожных знаков тегам OSM. Часть знаков также определяет свойства дороги сразу после: например, граница населённого пункта или ограничение скорости влияют на значение тега maxspeed=* (в его описании есть много примеров). Помните, что точки дорожных знаков ставятся прямо на линию highway.

Знаки населённых пунктов бывают на белом (ограничение 60 км/ч) и на синем (ограничение не меняется) фоне. Чтобы второй случай не влиял на навигационные программы и других мапперов, желательно ставить тег colour:back=blue. Ну и white для белого фона. Отрезок между белыми знаками придётся отрезать от остальной дороги, чтобы проставить там ограничение скорости maxspeed=60 + source:maxspeed=RU:urban. Сами по себе знаки не влияют на навигацию, но служат помощью мапперам и могут рисоваться на карте.

Километровые столбы у нас имеют два числа на обоих сторонах. В тег pk=* заносится то, которое написано на знаке по правую сторону от дороги. Если вы едете так, что километровые знаки находятся слева, посчитайте сумму обоих значений и вычитайте из неё числа на фотографии. При желании, конечно, можно добавлять тег pk:backward. Подробнее про эти теги написано в предложении. Кстати, trolleway напомнил, что есть ещё railway=milestone, которым можно мапить километровые столбы на железных дорогах. Они находятся по правую сторону при движении от узла (по возрастанию номеров) и стоят очень близко к путям, однако фотографии там не нужны, достаточно кнопки установки вейпоинта на GPS-навигаторе с километражом в качестве его названия.

Указатели рисуются отношением type=destination_sign на двух или трёх элементах: дороге «откуда» (опционально), точке перекрёстка и дороге «куда». Пропозал для этого отношения требует явного указания единиц измерения в distance=*, как и пропозал для километровых столбов. При этом я это требование игнорирую, записывая только число. Почему? Ну у нас же везде принята метрическая система, какой смысл добавлять лишние данные? Плюс, я рисую то, что написано на знаке, а там нет «км».

Названия остановок фиг разглядишь на фотографиях, но есть же официальные источники. Например, для Петербурга все автобусные маршруты, включая загородные, написаны вместе с остановками на сайте ГУ «Организатор перевозок». Названия остановок там, правда, в не особо удобном формате, и я рекомендую делать их лучше: не заглавными буквами и более по-русски. Хотя вариант «как написано на знаке» тоже отличный — если сможете разглядеть. При тегировании учитывайте новую схему; ставить ли на дорогу public_transport=stop, оставлю на ваше усмотрение. Будут полезны также shelter=yes/no и bench=yes/no.

Наконец, не забывайте про обычные точки интереса: заправки, магазины, кафе, отели, посты ДПС. А также про светофоры, пешеходные переходы и железнодорожные переезды. Много данных не бывает.

Адреса

Если вы проезжаете крупную деревню или небольшой город (плохо отражённые в OSM), и у вас есть несколько свободных часов, хорошо бы собрать треки улиц, их названия и как можно больше адресов. Просто потому что это опыт, совершенно не похожий на загородное или пешеходное картографирование. Понадобится, как всегда, GPS и фотоаппарат.

Предварительная подготовка не особо нужна, но можно зайти на валидатор границ или в другой каталог КЛАДР и списать для городов по маршруту список улиц, которые в процессе поиска вычёркивать.

Нужно ехать по каждой улице, высматривать таблички с названиями улиц и адреса на домах, и фотографировать их. Недостатка в таких табличках в большинстве случаев нет, поэтому скорость движения небольшая, и автомобилисту даже не обязателен пассажир. Главное — чтобы на снимках читалось относительное расположение таблички. Слева дом или справа? На фото из машины это видно по косвенным признакам: контурам окон, смешной физиономии водителя или пассажира. При движении пешком или на велосипеде нужно придумать систему: делать общие планы, дома справа фотографировать в «альбомной» ориентации, слева — в «портретной», повернув камеру на 90°.

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

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

При рисовании не забудьте, что населённому пункту с адресной информацией требуется контур place=*, а линии улиц не должны за него вылезать: некоторые рекомендуют делать точки в местах пересечениях улиц с границей города и в них делить дороги. Не ленитесь ставить на дома addr:street=*, а про нумерацию можно почитать на странице RU:Key:addr.

Аудиомаппинг

Это очень заманчивая мысль — не тратить батарейки фотоаппарата, а тараторить в диктофон: «начало населённого пункта, остановка слева... и справа, магазин справа Уют с восьми до двадцати, улица Попова налево асфальт две полосы, река Пряжка, столб сто двадцать два, остановка справа и слева, конец населённого пункта, знак шестьдесят километров в час». Хотя это верный способ надоесть самому себе, зачатки возможности уже есть в JOSM. Для этого вам понадобится диктофон, сохраняющий записи в разные файлы с простановкой времени создания — например, Olympus серии VN.

Первая проблема загрузки звука в JOSM — он поддерживает только wav. Поэтому вам нужен способ перегнать все mp3 или wma в wav без потери меток времени. Для этого я написал немного громоздкий, но простой скрипт на perl:

#!/usr/bin/perl
opendir($dh, ".") or die "Cannot open current directory: $!";
while( $f = readdir $dh ) {
  push @files, $f if( -f $f && $f =~ /\.mp3/i );
}
closedir($dh);

my $outfolder = 'wav';
for $filename (@files) {
@st = stat $filename;
$filename =~ s/\.mp3//i;
`lame --decode \"$filename.mp3\" \"$outfolder/$filename.wav\"`;
utime $st[9], $st[9], ("$outfolder/$filename.wav");
}

Для него требуется наличие каталога wav в текущем, содержащем все аудиозаписи, и программы lame. Сохраните скрипт в файл и просто запустите.

Теперь можно открыть трек в редакторе, в контекстном меню слоя выбрать «Добавить аудиозаписи», и совершенно без каких-либо вопросов на карте появятся кнопки проигрывания в точках, где метка времени файла с записью совпадает с меткой GPX-трека. Если у вашего диктофона нет GPS-модуля, эта привязка будет гарантированно неправильной. Для исправления этого есть два процесса: калибрация (учёт неидеальности подсчёта времени в диктофоне) и синхронизация (сдвиг аудиокнопок вдоль трека). Первое, скорее всего, потребуется делать только раз: после этого вас либо устроит результат, либо надоест процесс. Я же вообще не заморачивался чтением документации, а написал скрипт, сдвигающий метки времени всех файлов в текущем каталоге на количество секунд, указанное в параметре запуска:

#!/usr/bin/perl
$offs = $ARGV[0];
die "Invalid offset value: $offs\n" if $offs !~ /^[-+]?\d+$/;
opendir($dh, ".") or die "Cannot open current directory: $!";
while( $f = readdir $dh ) {
  @st = stat $f;
  $newtime = $st[9];
  eval '$newtime += '.$offs;
  utime $newtime, $newtime, ($f);
}
closedir($dh);

Во время движения, на каком-нибудь хорошо видимом сверху перекрёстке, нужно нажать кнопку записи и что-нибудь сказать в диктофон на этот счёт. Получившаяся метка используется для привязки: скриптом двигаем время туда-сюда, пока метка не совпадёт с перекрёстком. Всё. Да, на сайте JOSM есть довольно обстоятельная статья про использование аудио — на английском, конечно, а в этой вики есть что-то и на русском.

Теперь, надеюсь, понятно, что аудиомаппинг не совсем прост и не особо точен. Поэтому для POI и знаков всё равно лучше использовать фотоаппарат, пусть он и куда менее удобен. К сожалению, иногда диктофон — единственный способ сбора информации: например, когда вы ведёте автомобиль в одиночку. А иногда предмета для фотографирования просто нет.

Интегральные характеристики

Например, качество покрытия — свойство не какой-то точки, а отрезка дороги, и может быть оценено только после проезда по нему. Автор не очень понимает тег smoothness=*, поэтому изобрёл свою схему тегирования, surface:grade. Суть её проста: четыре градации качества, от «бесконечно ужасно» (0, встречается редко) до «отлично» (3). Относительно, конечно, покрытия surface=*, без которого тег бессмысленен. Посередине — «ну не знаю, обычное качество» (2) и «хуже среднего» (1). То есть, 2 считается средним значением, и от него нужно вычитать или прибавлять. На странице тега литературно описано значение этих чисел в приложении к разным типам покрытия, и когда-нибудь будут фотографии.

Для рисования этих значений нужно определить границы участков, где меняется качество, и это непросто. Обычно привязываются к границам населённых пунктов и перекрёсткам, хотя можно и делать фотографии, когда смена резкая. Разумеется, смена покрытия также влечёт и пересмотр качества. Этот параметр — причина покупки диктофона, на котором теперь куча записей вида (реальный пример, записи идут подряд): «асфальт качества три на основных дорогах», «после выезда из запорожского асфальт качества два», «после поворота на денисово грейдер обычного, второго качества», «после нескольких луж, где качество можно считать один, начался асфальт качества два», «от последнего поворота на куйвози асфальт идеальный». Эти записи потом преобразовываются в *.wav и загружаются в JOSM. Привязка особой роли не играет, как можно заметить: достаточно плюс-минус десяти минут. Итогом будут много тегов surface:grade=*, которые рано или поздно станут одним из де-факто стандартов.

Также

Когда-то давно автор написал поток размышлений на тему автомобильного картографирования. Оттуда можно почерпнуть немного мудрых мыслей о том, как тяжело быть пассажиром в чужой машине.

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