К слову об источниках русловой динамики степных рек с малым течением

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

Принято считать, что самой наглядной демонстрацией меандр являются космические снимки. Например, как вот этот мапбоксовский снимок реки Аксай:
aksaj

В действительности, ничего не может продемонстрировать суть меандрирования реки лучше, чем сплав по ней в солнечную погоду. Вот солнце слева от вас, а нет уже справа, нет, опять слева, нет сзади, да нет же, справа, хотя постойте, вот прямо по курсу светит… Сплавляясь весной по этой реке, я не мог не обратить свое внимание на особенности русловой динамики и даже имею кое-что сообщить вам по этому поводу.

Гидрологическая наука в лице А. Ю. Сидорчука (статья «Главные формы речных русел: меандры и разветвления«) утверждает, что: «Первоначальный изгиб русла появляется за счет гидродинамической неустойчивости прямолинейного потока». Утверждение настолько тривиальное, что создается ощущение, будто автор пытается уйти от вопроса первопричины образования изгиба водотока. В чем механика процесса зарождения изгиба, господа? Не развития, подчеркиваю, а именно изгиба? Если принять за истину, что в основе всего стоит «гидродинамическая неустойчивость», то следует признать, что такой неустойчивости присуще странное свойство сохранения ассиметричной структуры на время, достаточное, для появления разности скоростей течения, а это согласитесь, едва ли возможно.

Конечно-же, причины зарождения изгиба русла кроются не в самом водном потоке, но в связи водного потока и его русла. Неоднородности русла влияют на неоднородность потока и наоборот — это неразрывное целое. И с этой точки зрения прямолинейное русло есть система, напряженность которой прямо пропорциональна длине русла. В какой-то момент напряженность достигает максимума и линейная динамика сменяется хаотической в лучших традициях теории катастроф Рене Тома. В это сингулярное время, поводом к началу изгиба реки может быть все что угодно.

Но, хватит теории. Сплавляясь по Аксаю, я с интересом отметил, что во многих случаях, причиной появления разности скоростей водного потока у противоположных берегов являются упавшие стволы деревьев:
img_3042

Растущие по берегам деревья (большей частью тополя) падают неизменно в воду, поскольку крона их неравномерно развита и значительно более массивна с открытой стороны, обращенной к воде. Упав, дерево может достаточно долго оставаться прикрепленным корнями к субстрату, при этом замедляя течение и аккумулируя перед собой плывущие ветви и водоросли.
img_3039

Накопленный, благодаря колебаниям уровня воды ил, вкупе с разлагающимся субстратом древесины создает достаточные условия для произрастания трав, а в редких случаях даже кустарников:
img_3044

Но что еще интереснее — на реках с малым течением, коим является и Мертвый Аксай в его верховьях, основной причиной падения деревьев в воду становится не подмывание почвы, хотя таковое тоже имеет место, а банальный ветровал. В связи с этим, наиболее сильная дифференциация скорости водного потока происходит на участках реки с узкими береговыми полосами леса или множеством отдельно стоящих деревьев. Большие лесные массивы вдоль берегов служат достаточным барьером против ветра — плыть по этим участкам почти не составляет труда: топляков и коряг весьма немного. Участки же с редкостойными насаждениями по берегам исключительно труднопроходимы для лодки и порой представляют серьезную опасность для экспедитора.

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

Рубкология

Весь нынешний август я шароебился по разным кустам занимаясь оценкой успешности лесовозобновления на сплошных вырубках юго-запада Ленинградской области. Суть работы сводилась к следующему: я вылезал из теплой машины под бесконечный дождь, цеплял к рюкзаку на манер навесного оборудования трактора обычную штыковую лопату, в «ливчик» комбинезона засовывал планшетку с бланками, сжимал посильнее рукоять здоровенного тесака для рубки медвежьих бошек и в позе супермена из армии Батьки Махно погружался в дремучий кустарник, где писал разную технологическую ебанину и вонзал в раскисшую землю сотни палок с красными лентами.
102_4624

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

Итак, друзья, тушите свет, зажигайте свечи, разбрасывайте по полу каштаны. Наливайте себе стакан до краев и располагайтесь удобнее, ибо во многом знании много печали, но памятуя про in vino veritas едва ли найдется тот, кто не заметит очевидного парадокса в измышлениях старинных мудрецов. Однажды придет и мой Мелет, сын Мелета, пифеец, но пока, дрожание рук походит на кривую судьбы Агриппины младшей, между Нероном и Тиберием велик соблазн немного повертеть на граненом стакане кровавый сапожок. Веселье, друзья, конечно же веселье служит нам путеводной нитью этого вечера! Все начинается с того, что раз в полторы недели вы до утра обрабатываете вымокшие бланки с кровавыми пятнами. Пеленг такой-то, широта такая-то, долгота такая-то, фото номер N. Три березы, две елки ноль пять, елка полтора, осина, две рябины, сосна ноль пять. Пишите, чертите, вслушиваетесь в свой голос с диктофона, просматриваете отснятые файлы. Что-бы не заснуть, выходите на улицу покурить и вновь возвращаетесь. Веселитесь изо всех сил.

102_4609

А через несколько часов, едва небо начнет светлеть, двери электрички закрываются и вы наслаждаетесь красотой и величием заоконных пейзажей:

102_3538
Чем дальше, тем пейзажи все красивее и величественнее
102_3523
И конечно-же, все веселее и веселее
102_3571

Но все проходит, стоит лишь выйти на пробу. Встанешь на первую вешку, оглянешь взором предстоящий фронт, сплюнешь и произнесешь благословенное «ёб твою мать». А из динамика телефона тебе отвечает лектор Петухов. «Давайте начнем!»: говорит он. А действительно, давайте начнем! И с этими словами ебнешь свою профилактическую соточку, затянешься поглубже чем бог послал и выпуская дым, начинаешь орудовать тесаком, вязать ленты, писать и бесконечно фотографировать.

102_4755

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

Карта рубок. Что есть рубки с точки зрения дешифрирования? правильно, рубки есть видоизмененный лес. Значит не ебем себе мозг, а прямо так, английским по белому пишем в поисковой строке браузера: «forest change map». По первой же ссылке попадаем на известный проект Global Forest Change:

111

Классная штука этот GFC. Спецы из Мэрилендского университета, Гугла и Геологической службы США, обработав огромное количество ландсатных снимков, выдали в качестве результата данные по изменению лесного покрова за период с 2000 по 2012 гг. Это то что нам надо, скачиваем данные на нужный нам регион в формате GeoTiff.

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

102_4492

Но зато разбиение данных по остальным параметрам уже дело техники. Для начала векторизуем наш растр в QGis:

222

Из производного шейпа аттрибутивной выборкой по возрасту рубки извлекаем новый полигональный слой. Далее, через калькулятор полей считаем площадь каждого полигона, и удаляем слишком крупные и мелкие полигоны. Остается только исключить рубки, находящиеся в самых недоступных ебенях. Но это тоже не космос: скачиваем через overpass дорожную сеть OpenStreetMap, Строим вдоль проезжих дорог буферную область, доступную для пешего подхода и после этого удаляем все полигоны рубок, которые не пересекаются полученным буфером.

Все, слой готов. Экспортируем его в kml и  SAS.Планету, настроив подходящий вид:

333

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

Загружаем данные в навигатор и вперед — рубить ветки, месить говно и давить фиолетовые грибы

102_3089

Можно ли размещать площадки на волоках и в каналах? С одной стороны это тоже часть территории. С другой стороны, размещение учетных площадок в таких местах вносит не отслеживаемую погрешность. Вопрос можно поставить даже шире: уместно-ли рассматривать общие показатели восстановления для территории с комплексными видами нарушений? Правильно, неуместно. Пасеки — отдельно, волока — отдельно, земля — крестьянам, мудаков — нахуй.

102_4557Существует несколько принципов, которыми следует руководствоваться приступая к любым полевым работам. Конечно-же, следует помнить о нарастании коэффициента обалдевания: с каждым разом вы, вне зависимости от вашей старательности, будете выбирать наиболее легкие для описания площадки. Это неизбежно приводит к систематическому занижению результатов на 5-15%. Избежать этого можно путем формализации процедуры выбора точки описания: например подобно геоботаникам кидать дрын, служащий, после падения, стороной учетной площадки. Можно и протягивать на определенное расстояние рулетку по выбранному пеленгу. Но этот подход работает плохо даже на рубках трехлетней давности

102_3350

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

Любые поточные полевые наблюдения кроют в себе опасность смещения данных. Стоит вам пропустить наблюдение на одной из учетных площадок, как ценность всех дальнейших наблюдений оказывается равной нулю. Но каждый раз заполнять чек-лист слишком затратно по времени. Поэтому мой вам совет: синхронизируйте все что только возможно. И немедленно. Если вы стоите на восьмой учетной плошадке, пусть номер вашей точки в навигаторе будет «508», а номер фотографии «18». Организуйте все так, что-бы пропущенное наблюдение моментально бы искажало конструкцию данных.

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

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

hand

Стоит ли говорить о том, что на пробе вы записываете не количественные, а качественные показатели? Правильно не стоит. Потому что любые количественные измерения есть суть более формализованные качественные. И если в одной графе бланка записано «87 берез», а в другой «92 березы», только безумец будет утверждать, что во втором наблюдении на пять берез больше. Разумный человек сразу понимает, что на обоих площадках одинаковое количество подроста, чуть меньше сотни стволиков, но определенно больше полусотни. И во втором наблюдении их может оказаться чуть больше, хотя если подсчитать, может и чуть меньше. «А чего-же не подсчитать их точно?» — спросит какой-нибудь далекий от биометрии человек. А подсчитать их точно невозможно, ибо натуральные числа используемые для счета представляют собой слишком грубый инструмент, не позволяющий описывать переходные состояния. Каждый стволик считается по отдельности, но в какой момент растущий стволик отличается от новой ветви, особенно если речь идет о корневой поросли? Нет, коллеги, натуральный счет тут не подходит, да и действительные числа едва ли применимы. Я уж не говорю о космической сложности таких измерений.

102_4321

Нахрена столько сложностей в подсчете кустов? А сложностей никаких и нет. Рост профессионального геоботаника составляет один метр семьдесят восемь сантиметров. Поэтому для определения количества подроста на гектар, ему достаточно сосчитать количество стволов, на которые он упадет если выпьет на стакан больше положенного и умножить полученный результат на тысячу. Причем, поскольку упасть он может в разные стороны, подсчет стволиков ведется на всей площади круга, радиусом 1,78 м. Обернулся вокруг себя — видишь, что при падении непременно подомнешь под себя три елки и пять берез. Следовательно, на гектаре три тысячи стволов елового подроста и пять тысяч подрастающих берез. Если вам трудно представить, как вы пьяный валяетесь по кустам или ваш рост далек от идеала, можете крутить вокруг себя рейку аналогичной длины, а еще лучше приспособьте для этого дела телескопическую удочку. Впрочем, навык приобретается быстро.

В чем же секрет? Да все просто: Pi*r^2 => 3.14*1.78*1.78 ≈ 10 кв. метров. Гектар есть 10 000 кв. метров, а следовательно наша круговая площадка есть тысячная часть гектара.

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

102_4702

то с елкой уже сложнее, мутовки у нее выражены гораздо хуже

102_4754
А у лиственных вообще хрен возраст определишь. Разве что по числу побегов или годовым кольцам, но все это разовые замеры. Обычно прикидываешь зависимость возраста от высоты для нескольких модельных стволиков, и далее интерполируешь сотни и тысячи наблюдений.  Ценность таких данных сами можете себе представить. С другой стороны, разве можно получить бессмысленные данные иначе как занимаясь бессмысленным делом?

Очередной день рождения молодой березки — место нарастания нового побега.

108_5032

Нельзя забывать о том, что для сосны и елки подчас не столь важен возраст и количество, сколько жизненное состояние. Определяется оно просто. Подходите к дереву:

108_4994

И делаете так:

108_4995

Еще раз продемонстрирую. Подходите к дереву:

108_5026

Хуяк!

108_5028

А далее руководствуетесь вот этой схемой определения жизненного состояния:

shema

При планировании подобных исследований, особое внимание следует уделить времени проведения работ. В условиях Северо-Запада Русской равнины, сплошные рубки обычно приводят к повышению уровня грунтовых вод. Конечно, если вам предстоит работать преимущественно в скальных, лишайниковых или брусничных типах то все ок:

102_4673Но скорее всего, вам придется обследовать долгомошники, черничники и кисличники:

102_4757

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

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

102_4555

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

102_4583

С другой стороны «полное отторжение от бреда нашего» вам гарантировано. Да и как может быть иначе в условиях, когда последние мировые новости узнаешь из лесохозяйственных столбиков?

108_4996

Да, дожди утомляют, но с другой стороны комаров и клещей мало. Зато много грибов, а брусники вообще как говна:

102_4553

И все же мне сказочно повезло. Окончание лета я встретил в Сланцевском районе. Дожди прекратились на целую неделю и все живое выползло погреться и просохнуть перед наступлением первых холодов.

Вылезли кистехвостки (Orgyia antiqua):

102_3369Вылезли семиточечные божьи коровки (Coccinella septempunctata):

108_4790

и разная другая живность

108_5033

Только гадюк стало гораздо меньше — весь август они ползали под ногами, что довольно сильно меня напрягало ибо змей я панически боюсь с раннего детства. Глядя на всю окружающую красоту, просто нельзя было не вспомнить, что даже живущий один год жук-навозник умеет ориентироваться по звездам, а я за четверть века так ничему и не научился.

dscn9008

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

108_4964

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

108_4905

Подогревал себе фасоли в помидорном соусе, кипятил крепкий чай и наливал маленькую рюмку водки

108_4907

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

Однажды утром я проснулся от холода. Костер погас, ветер гнал кучевые облака и спешить мне было некуда. Лето закончилось, а вместе с ним завершились работы по оценке лесовозобновления на вырубках. Мне пора было возвращаться обратно — до конца полевых работ оставалось менее полутора месяцев. Вскипятив себе чаю я собрал свой нехитрый скарб и закопав кострище, направился в сторону ближайшей дороги.
108_5040

С кем не бывает

Дело было так. Стою на остановке в Тосно, никого не трогаю, жду свой пазик в деревню. Вдруг, чувствую в затылке предательски закололи теплые иголки, в глазах потемнело и ноги потеряли силу как прошлогодний агар-агар. Ну все, думаю, пизда пришла. Тут бы не валиться мешком на заплеванный асфальт, сесть на лавку, принять косоносную с достоинством. А вот хрен там. Все лавки бабками заняты, хули что семь утра на дворе. К тому же дико потянуло блевать, а я ввиду врожденной интеллигентности на остановках блевать не привык, поэтому собрав остатки сил утащил свое туловище за угол и повинуясь окончательной страсти перед закрытой дверью «Евросети»изверг из себя в урну следующее:

Модель Лотки-Вольтерра, хоть и является сугубо теоретической, однако в утрированном виде описывает реальные кривые видового разнообразия, что подтверждается авторами, фамилии которых я сейчас, в таком состоянии и не вспомню. Но дело не в этом. Дело в кривых изменения численности популяций этой модели.

Окажись вы на моем месте тогда, наверняка бы все уже поняли, но в то утро божественные пиздюли предназначались мне в одно ебло, а потому придется напомнить о том, что видовое разнообразие и проективное покрытие живого напочвенного покрова связаны между собой примерно как синусоида с косинусоидой (пример грубый но наглядный). Сущность этой взаимосвязи проста: растительное сообщество есть диссипативная структура с присущей ей зависимостью структурных преобразований от интенсивности проходящего через нее потока энергии. Об этом еще в «Полевой геоботанике» писано, нехуй тут рассусоливать. Увеличение потока энергии приводит к повышению сложности системы, и обратно.

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

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

А вот и она, великая секунда откровения: одна из немногих вещей, за которые я люблю жизнь во всех ее проявлениях. Вы только посмотрите как до кровавых мозолей на глазах похожи кривые Лотки-Вольтерра на кривые изменения видового разнообразия и обилия видов в живом напочвенном покрове! Конечно же, похожесть еще ни о чем не говорит, не тычьте художника в мольберт. Однако, в потенции, это новый взгляд на оценку структурных изменений экосистемы, включая ее животный компонент. Судите сами: те же два параметра. Количество хищников ограничено и не может превышать некоторого предела, после которого эти мудаки выжрут все и подохнут от голода.  Количество жертв тоже не может расти бесконечно, однако в рамках системы, с наличием хищника верхней границей их роста можно пренебречь.  Примитивно говоря: может быть очень много мышей и мало лисиц, но очень много лисиц и мало мышей быть не может, ибо жрать нечего.

Сразу же напрашивается сравнение проективного покрытия с хищником. Юморная, конечно, аналогия, но напомните-ка мне, а не Тильман ли развивал гипотезу о снижении видового разнообразия за счет усиления доминантной роли нескольких видов? И в чем кроется наша уверенность в том, что мы не спутали в очередной раз повод и причину происходящих процессов?

Тут-то меня и отпустило.

Опен стайл пиздинг

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

Картостиль есть суть набор правил и файлов, регламентирующих порядок и внешний вид отображения геоданных. В материальном виде это просто код с прилагающимися файлами иконок, шрифтов и прочей требухи. Стиль Y был написан весной текущего года между состояниями суицидальной депрессии и либидозной эйфории, поэтому не удивляйтесь наличию в коде некоторых странных и откровенно нелогичных решений. Однако ближе к сути. Дело было так: одна очень крупная компания, решила кинуть другую очень крупную компанию, а я в этот момент мимо проходил. Я человек не святой, как и все мы: продавал ворованные автомобили, сбывал краденные с завода детали станков, подделывал финансовые документы, пиздил со стройки арматуру, совершил нападение на (тогда еще) милиционера, за что был честно отхуячен дубинкой и вообще много чего плохого в жизни натворил. Несмотря на это к авторскому праву всегда относился трепетно, ибо в жизни каждого мудака должно оставаться что-то святое. Но тут соблазн был слишком велик, что-бы ему противостоять и я отдал себя водам темной страсти, что несли меня по пути самой интеллигентной из форм незаконного обогащения. Я взял да и спиздил картостиль у Яндекса, применив его для данных OSM. Не сказать, что-бы спиздил полностью: иконки и шрифты не трогал, вся работа велась исключительно над классификацией данных и дублированием визуализации линейных и полигональных объектов.

Код писался под Mapnik. Есть еще вариант этого кода написанный на CartoCSS, но он несколько устарел, а потому я его тут не выкладываю. Для отрисовки тайлов в этом стиле рендер должен подсасывать данные OSM в формате шейп-файлов, которые доступны на сайте ГИС-ЛАБа

Конечно-же, результат далек от идеала, однако, как говорил один знакомый прокурор: «похоже до степени смешения». Это еще раз подтверждает, что закрытые проекты сосут перед опенсорсом. Ибо сделать из OpenStreetMap Яндекс-карты — что в носу поковырять, а вот обратно хуй там. Еще есть огромное количество моментов, которые следует исправить, а то и вовсе полностью переделать. Но нет предела совершенству, в отличии от жизни человеческой.

Ну а теперь самое интересное: картинки. Давайте погуляем по зумам. В Яндекс-картах их шестнадцать, со второго по восемнадцатый. Вот второй зум:
2

 

Здесь и далее слева карта Яндекса, справа мое скромное творение.

На низких зумах при стилизации данных OSM возникает проблема приоритета названий: запросто может быть, что надпись «Тринидад и Тобаго» выводиться, а, например, «Япония» нет. Что поделать, такое оно случайное отображение данных. Пришлось ранжировать страны по численности населения и в зависимости от этого ранжировать отображение надписей. Но и тут не все хорошо, а именно есть две проблемы. Во-первых, страны не представляют собой единые полигоны, в результате чего, подписывается не только основная площадь страны, но и какой-нибудь нахуй никому не нужный остров, юридически принадлежащий, скажем Франции. Можно было, конечно исправить это дело путем учета площади, но поверьте, гораздо проще и спокойнее было сделать это ручками, отредактировав непосредственно сами данные.

Третий зум:

3

 

Вторая проблема заключается в том, что названия стран выводятся в центроидах полигонов, отчего выглядят они порой совсем не на своем месте, например, как Финляндия на четвертом зуме:

4

 

Кроме того, названия часто выходят за границы полигонов, ограничивающих сами эти страны. Ох и долго пришлось повозиться, дабы все это настроить должным образом. Зато я понял главное: все что выше пятого зума легче, проще и быстрее отрисовать вручную и не ебать себе мозг автоматизированной визуализацией геоданных. Поверьте, это того не стоит. Всего за пол-часа работы в QGIS я создал нужное количество идеально подходящих для меня слоев (ссылка на них есть в коде стиля), попутно подписав моря, о чем картографы Яндекса совершенно забыли.

На пятом зуме пришлось изрядно возиться с водоемами. Будете смеяться, но в OSM нет единых водотоков, одни кусочно-разрывные графики функций, снабженные разными тегами. Например, вы не можете легко отобразить на карте такую реку, как, Енисей, поскольку часть реки riverbank, часть water, а часть вообще непонятно как тегирована. Дай думаю, посмотрю, а как реки в стандартном стиле отображаются? А вот хрен там, они в стандартном стиле на этих зумах никак не отображаются. Ну что тут поделать? Я налил себе стакан и вывел интересующие меня реки просто по их имени, благо крупных рек выводить много и не требовалось.

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

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

 

Шестой зум заставил изрядно повозиться с названиями рек, которые никак не хотели гармонично сочетаться ни с названиями городов, ни между собой. Проблема та-же: кусочность осмовских данных. По хорошему, перед тем, как писать картостиль не лишним будет убедиться в том, что сами геоданные у вас представлены должным образом, иначе прорва времени будет уходить на латание Тришкина кафтана: в одном месте исправил, в другом все поехало. Я уравновесил эти безумные колебания насколько смог:
6

И тут я должен сделать важное замечание. Я пишу эту статью уже три недели и у меня нихрена не выходит, получается одна шляпа, которая терзает и не отпускает. Думал, вот сегодня хоть что-то напишу, так нет-же. То пиво закончилось, то батарея у компьютера разряжается. Поэтому смотрите картинки и додумывайте сюжет сами дальше. Я может и вернусь к этой теме, но позже, а то мне через четыре часа в тайгу ехать, а у меня уже ни в одном глазу. А все потому что сковывает запястья суета пустого и забивает глаза пыль пустопорожних тщет.

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

7

 

На седьмом зуме, я не удержался и нарисовал простенькие svg-иконки аэропортов, как в Яндексе. С аэропортами тоже все оказалось не так просто, поскольку изрядное количество существующих аэропортов, точнее аэродромов имеют двойное назначение. Пришлось отделять зерна от военной инфраструктуры, зато я узнал о существовании в Подмосковье аэропорта Толмачево.

Восьмой зум:
8

 

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

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

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

 

Еще одна трудность, которая начинается на девятом зуме это железные дороги. Данные OpenStreetMap настолько разнятся в этой части от данных Яндекс карт, что для достижения похожести стилей приходиться применять совсем другое обозначение для железных дорог. В OSM  в отличии от Яндекс-карт отрисована каждая ветка захолустного пути, поэтому применение оригинального стиля ведет к тому, что железные дороги начинают выглядеть как толстые черные полосы. А стоит немного отойти от оригинала и сразу все нормально. Десятый зум:
10

 

Одиннадцатый зум, на котором я потерял названия районов и несколько дней не мог их найти, но в итоге нашел:
11

 

На двенадцатом зуме вновь пришлось создать, даже не иконку, а так, графический примитив для визуализации железнодорожных станций:
12

 

А вот на тринадцатом, я уже слепил иконки станций метрополитена из того, что было открыто и под рукой. Если не ошибаюсь, изначально это были иконки музеев или библиотек, но да хрен с ним, повторюсь, передирание иконок в мою задачу не входило.
13

 

Четырнадцатый зум:
14

 

Пятнадцатый зум:
15

 

С шестнадцатого зума дома приобретают форму. Здесь я применил самый хромой костыль из всех. Дело в том, что все мои попытки отобразить домики в виде полупрозрачных объектов натыкались на то, что они походили на странные коробки — для правильного отображения, полупрозрачными должны быть только крыша и лицевые стенки домиков, а все что скрыто под крышей должно быть полностью прозрачным. Я эквилибрировал разными вариантами,  но в итоге, единственным решением, которое меня частично удовлетворило, стало погружение домиков в глубину.
16

 

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

 

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

 

И еще кое-что. Хоть стиль и можно скачать, но все-таки не забывайте, что пользоваться им незаконно, ибо был он честно спизжен. Как производственный продукт он не годится. А вот для процесса познания того, что OpenStreetMap — круть небесная, в самый раз.

Нечеткое тегирование это просто

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

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

Итак, как говорил Сократ: «Точное логическое определение понятий — условие истинного знания». Тегирование в OpenStreetMap это присвоение набору геоданных некоего смысла и пояснения, которое выражается в виде присвоенного ключа (тега) и его значения. Например, дорога внутри жилых зон обозначается как highway=living_street. Здесь слева от знака равенства в теге прописано отнесение геоданных к классу (класс дорог), а справа дано пояснение (дорога вдоль жилых зон).

Можно ошибочно подумать, что схема тегирования OSM представляет собой примитивный аналог иерархических классификаций, состоящий всего из двух уровней. На самом деле это большое заблуждение, поскольку в верно построенной иерархической классификации два элемента относящиеся к разным надмножествам элементов не могут быть похожи до степени смешения, или говоря более строго, близость элементов различных подмножеств иерархической системы всегда меньше близости содержащих их надмножеств. Практически это выражается в том, что два объекта, относящиеся к разным образцам надклассов не могут быть более близки, чем сами эти надклассы. В OSM такое встречается сплошь и рядом: мой любимый пример natural=wood и landuse=forest. Близкие и часто взаимозаменяемые значения относятся к разным тегам. Такое в иерархической системе невозможно.

Впрочем, в этом нет ничего плохого. Как показывает эмпирический опыт, иерархические классификации подходят для искусственных, либо абстрактных геоданных. Объекты же «чисто конкретные», которые и содержит в себе база OSM в иерархическую систему не укладываются ибо для таких объектов характерен избыточный диатропизм.

Что это значит в переводе на язык бытового жанра? Это значит, что в нотации «ключ»=»значение», знак равенства абсолютно избыточен и выполняет карго-функцию. Это не более чем формализм и ничем необоснованное усложнение нотации. А значит и вся схема тегирования данных проекта OpenStreetMap сводится к присвоению геоданным пояснительного текста, содержащего в себе знак равенства. С таким же успехом можно было подписывать данные в виде «natural_wood», «naturalwood» или просто «wood» (забыл сказать, каждый тег содержит только уникальные значения, а это еще один довод против иерархичности схемы тегирования OSM). Говоря еще проще: никакой схемы тегирования в OSM нет, есть лишь набор странно оформленных подписей для каждого набора геоданных. Если вы сможете переступить через себя настолько, что признаете этот вывод, дальнейшее пояснение будет для вас совсем легким.

Повторюсь: данные OSM не имеют схемы тегирования, это лишь набор геоданных со странно оформленными подписями. но не подумайте, что это недостаток, как раз наоборот, это наиболее сильное преимущество проекта. Проблема в том, что преимущество это используется не до конца. Если-бы каждому объекту был присвоен только один тег, то можно было бы в полной мере говорить о примитивном булевом тегировании, которое безусловно давно устарело. Но тегов можно присвоить огромное количество. Например, не просто указать, что это здание и оно является магазином, но и дополнить информацию о нем часами работы, инженерными параметрами здания и еще чем в голову взбредет. Значит ли это, что объекту можно присвоить любое сочетание тегов (разумеется соответствующее действительности)? Нет. Каждый из тегов, присваиваемых объекту должен однозначно и независимо характеризовать какое-либо из свойств объекта. Есть у улицы свойство в виде ее названия — пожалуйста, тег «name». Есть у той же улицы свойство в виде покрытия дороги — пожалуйста, тег «surface». Для каждого свойства свой тег.

Но вот она, квинтэссенция моей сегодняшней речи. Одно и то-же свойство объекта можно (и нужно) выражать не посредством одного тега, а с помощью любого количества необходимых тегов. Зачем выбирать каким тегом обозначить лес с густым подлеском: natural=wood или natural=scrub, если можно использовать оба этих тега одновременно? А для большей ясности можно присвоить каждому тегу характеристическое значение истинности, от нуля до единицы. Ноль означает, что это свойство отсутствует, единица означает наличие этого свойства (не будем здесь поднимать дискуссию о критерии определений значений характеристических функций нечетких тегов и области значений таких функций). Конечно, придется изменить нотацию, но выглядеть это будет примерно так:
Лес с редким подлеском: wood(0.9),scrub(0.2);
Кустарниковые заросли с редким пологом леса: wood(0.4),scrub(1.0);

Так можно смешивать между собой абсолютно любые теги, что даст осмерам необычайно гибкий инструмент для описания реальной обстановки на местности. Вот несколько реальных примеров:
Юго-Запад Ленинградской области, дорога к базе охотников и рыбаков «Кривая Лука». Пять месяцев назад осмер под ником Sergey Astakhov отрисовал эту дорогу, обозначив ее как highway=track. На большем протяжении так оно и есть, но в паре мест, как бы вам это сказать… в паре мест то, что сейчас иначе кроме как highway=track не назовешь, в системе нечеткого тегирования выглядело бы как track(0.5),water(0.5). Или может вам больше по душе обозначение surface=water?

Другой пример из Кингиссепского района. Нарисованные по космосу тем же осмером дороги являются не чем иным как минерализованными противопожарными полосами и в системе нечеткого тегирования выглядели бы как road(0.2),ditch(1,0),forest(1.0) в том смысле, что это слабо похожая (0.2) на дорогу траншея используемая в лесном хозяйстве:

 

Другой похожий пример из Любанского района. На карте он не обозначен и честно говоря, не уверен, что есть отдельные теги для лесных волоков. Это один из главных недостатков привычной булевой классификации объектов по сравнению с нечетким тегированием. Пока старообрядцы будут выдвигать пропозалы с миллионами новых тегов, новое поколение картографов, владеющих знанием о нечетком тегировании легко опишет любой ранее невиданный объект. Например так: road(0.3),log(1,0),forest(1.0) — подобие дороги (0.3), устланное бревнами для целей лесного хозяйства.DSCN9054

Тут, пожалуй, наступило самое подходящее время, что-бы рассказать о потрясающей конструкции со вложенными нечеткими тегами, которая позволяет описывать реальность еще гибче, проще и правдоподобнее, но увы. Время уже позднее, а мне еще в деревню за трактором идти. Надо же как-то выбираться из этого track(0.3),water(0.7).