fleur.js

Оценка кормовых угодий на JavaScript

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

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

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

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

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

Жизнь устроена сложнее наших условностей. Не бывает двух организмов, а уж тем более видов с одинаковыми требованиями к условиям обитания. «Что русскому хорошо, то немцу смерть» в переводе на экологический язык называется нормой реакции и выражается в кривой жизнедеятельности:
Кривая жизнедеятельности

Принцип влияния экологических факторов на организм выражается пословицей «Все хорошо в меру». Задача — сравнить между собой «меры» различных видов и применить к ним школьный принцип «меньше большего, больше меньшего». Если мы нашли одуванчик, значит условия жизни для одуванчика подходят. Если рядом с одуванчиком сныть, значит условия жизни подходят для одуванчика и сныти одновременно. Если мы собрали тридцать разных видов, значит условия подходят одновременно для каждого из них. Чем больше видов, тем уже диапазон факторов произрастания:
Сужение диапазона факторов произрастания

Теоретически, мы можем построить такие кривые для любого фактора окружающей среды (вопрос эмергентности опустим — это тема долгого и сложного разговора). Нас не волнует медианное значение влажности почв. Мы хотим знать, достаточно ли влаги растениям? Это не одно и тоже: весной воды хоть залейся, но растения живут в условиях физиологической сухости, поскольку не могут впитать воду из холодной почвы. Вопрос шкалирования («в каких единицах измерять») решается принципом канторово-пелевинской «сиськой в себе». Рисуем пустую стобалльную шкалу, после идем в самое сухое место, определяем найденные растения и вписываем их в левую часть шкалы. Потом идем в самое сырое место и вписываем местные растения в правую часть шкалы. После делаем несколько десятков тысяч описаний из разных мест и расставляем на шкале встреченные виды.

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

Идя по градиенту влажности от сырого к сухому месту, вы встретите новые виды. Пока еще чахлые и редкие. Они едва выживают при такой влажности. Скоро этих растений станет больше. В идеальных условиях проективное покрытие возрастет до ста процентов — вспомните непроходимые заросли крапивы urtica dioica. На подходе к сухому месту проективное покрытие уменьшается, в сухих условиях остаются лишь единичные растения. В очень сухих ваши они уступают другим видам. За время похода вы пройдете несколько куполообразных изменений проективного покрытия, которые вспомните составляя шкалу:
Градиент изменения условий среды

Когда первая шкала готова, делим весь массив описаний на группы по влажности территорий и для каждой группы тем же методом строим шкалу «бедность-богатство-засоленность». Затем итеративно повторяем процесс для переменности увлаженения, аллювиальности почв, пастбищной дегрессии (вытоптанности) и чего душа пожелает.

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

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

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

Казалось бы, любой первокурсник-технарь напишет алгоритм за пару часов, любой школьник, отличающий инкремент от компиляции закодит его за вечер. Все просто как две копейки. Но все программные реализации (включая мою работу десятилетней давности) напоминали сплетенные из вареных макарон костыли для безруких. Потому что легче «Анну Каренину» на машинный язык перевести, чем автоматизировать работу с экологическими шкалами Раменского.

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

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

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

Линней, работая с номенклатурой не думал о том, что латынь уйдет в прошлое, а коробка размером с небольшой саквояж уместит в себе всю ботаническую литературу. Сегодня виды сохраняют латинское название (и это правильно), но саму латынь никто не помнит, герундий от герундива не отличает, рода путают между собой. В результате окончания видов обычно записаны с ошибками. Другое проблемное место — нечитаемые буквы. Попробуйте спустя месяц по памяти верно воспроизвести krascheninnikovii, krascheninnikoviana, или krascheninnikoviorum. Тут ботаники с лицом честного гаишника воскликнут, что они, дескать все выверяют по справочнику Черепанова. Клевер луговой у них трифолиум пратенсе, а клевер ползучий — амория репенс. Не верьте. При мне за несколько лет луговик извилистый из дешампсии стал лерхенфельдией, а из последней превратился в авенеллу. Все обсуждают подобные мелочные вопросы и никто не ничего хочет менять всерьез. А без изменений весь накопленный материал стоит дешевле макулатуры.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
var descript = [
{
time:20160602,
note:'GR-0602-1',
tags:'Сосняк, Мяглово-Карьер',
lat:59.82739,
lng:30.69896,
datum:'4326',
author:'S.N.Golubev',
feedback:'schwejk-rpnt@rambler.ru',
license:'CC-BY-NC-SA-3.0',
source:'fieldobserve',
aream:2411,
dendro:{   /*Характеристики древостоя*/
	allvolumemcb:329,   /*Запас, куб. м*/
	allfullmsq:34.4,    /*Абсолютная полнота, кв. м*/
	pins__sylrs:{       /*Данные по сосне - pinus sylvestris*/
		volumemcb:329,   /*Запас, куб. м*/
		fullmsq:34.4,    /*Абсолютная полнота, кв. м*/
		diasm:23,        /*Средний диаметр, cм*/
		heightm:24.7,    /*Высота, м*/
		age:70,          /*Возраст, лет*/
	},
},
grass:{   /*Данные по живому напочвенному покрову*/
	allcover:50,   /*Общее проективное покрытие яруса*/
	cover:{        /*Повидовое проективное покрытие*/
		vacnm_myrls/*Черника - Vaccinium_myrtillus_L*/:20,
		vacnm_vitd/*Брусника - Vaccinium_vitisidaea_L*/:30,
		conlr_majls/*Ландыш - Convallaria_majalis_L*/:5,
		trils_eurp_/*Седмичник - Trientalis_europaea_L*/:0.1,
		desps_flexs/*Луговик - Deschampsia_flexuosa_Trin*/:10,
		melrm_prans/*Марьянник - Melampyrum_pratense_L*/:0.1,
		luzl__pils_/*Ожика - Luzula_pilosa_L_Willd*/:0.1,
		calln_vulrs/*Вереск - Calluna_vulgaris_L_Hull*/:0.1,
		charn_anglm/*Кипрей - Chamerion_angustifolium_L_Holub*/:0.1,
		fragr_vesc_/*Земляника - Fragaria_vesca_L*/:0.1,
		soldg_virgr/*Золотарник - Solidago_virgaurea_L*/:0.1,
		maimm_biflm/*Майник - Maianthemum_bifolium_L_FW_Schmidt*/:0.1,
		desps_cests/*Щучка - Deschampsia_cespitosa_L_Beauv*/:0.1,
		},
	},
undergrass:{/*Данные по мохово-лишайниковому ярусу*/
	allcover:40/*Общее проективное покрытие яруса*/,
	cover:{
		polhm_specs:0.1/*Политрихум*/,
		plezm_schbr:40/*Плеуроциум*/,
		},
	},
},
]

Структура данных повторяет бланк описания (метаданные-древостой-живой напочвенный покров-мохово-лишайниковый ярус). Видам с незначительным обилием присвоено проективное покрытие 0.1%. Видовые названия записаны в виде одиннадцати символов: пять на род, пять на вид и символ нижнего подчеркивания между ними. Род и вид преобразуются в код вида по такому принципу:
— Первые три буквы таксона берутся без изменений (Convallaria — con);
— Последние две соответствуют двум последним согласным таксона (Convallaria — lr);
— Если букв в таксоне меньше пяти, пропуски заполняются нижним подчеркиванием (Poa pratense — poa___prans);
— Если после первых трех букв одна согласная или согласных нет — пустые места заполняются нижним подчеркиванием (Luzula_pilosa — luzl__pils_).

Это не самый удачный принцип, поскольку требует исключений. Например, одуванчики Taraxacum laticordatum и Taraxacum latisectum кодируются одинаково: tarcm_lattm. К более простому решению, которое обеспечивает автоматическую кодировку списка таксонов я пока не пришел. К счастью исключения редки даже для региональной флоры, для локальной совсем незначительны и легко отлавливаются простой проверкой по сортированному массиву.

После я перевел таблицу из книги Л. Г. Раменского в js-массив следующего вида:

1
2
3
4
5
6
7
8
9
10
11
12
var ramen = [
["КОД", "ВИД", "ШКАЛА", "ЗОНА", "ПОЧВА", "ПОКРЫТИЕ", "MIN", "MAX"],
["acalm_punns", "Acanthophyllum pungens (Bunge) Boiss.", "water", false, false, 0.3, 10, 15],
["acalm_punns", "Acanthophyllum pungens (Bunge) Boiss.", "water", false, false, 0.1, 8, 1000],
["acalm_punns", "Acanthophyllum pungens (Bunge) Boiss.", "rich", false, false, 0.3, 12, 15],
["acapr_schhr", "Acarospora schleicheri (Ach.). Mass.", "water", false, false, 2.5, 15, 19],
["acapr_schhr", "Acarospora schleicheri (Ach.). Mass.", "water", false, false, 0.3, 11, 22],
["acapr_schhr", "Acarospora schleicheri (Ach.). Mass.", "water", false, false, 0.1, 10, 35],
["acer__plads", "Acer platanoides L.", "water", false, false, 0.1, 65, 71],
["acer__plads", "Acer platanoides L.", "water", false, false, 0, 0, 91],
...
]

Массив состоит из 11 673 элементов, включая заголовок. Каждый элемент содержит информацию о видовом коде, таксоне, экологической шкале, минимальном и максимальном балле шкалы. Информация о типе почв и природно-климатической зоне отсутствует, но на случай развития проекта для этих данных оставлено место. В тех случаях, когда минимальный балл в книге не указан, в таблице стоит 0. Если не указан максимальный балл, в таблице стоит 1000.

Скрипт расчета Fleur.js содержит всего полторы сотни строк, но его следует сократить вдвое, поскольку вторая функция на 99% дублирует первую. На момент написания я вконец обленился и просто скопипастил свою же функцию, дополнив ее несколькими строками. Функция «ramenall(e)» подхватывает первое описание в серии, переводит абсолютные значения проективного покрытия из геоботанического описания в группы проективных покрытий шкал Л. Г. Раменского (единично-0.1, 0.1-0.3, 0.3-2.5, 2.5-8, 8 и более процентов). После сравнивает видовые списки из описания и таблицы экологических шкал на основе общего ключа кода видов. Найдя совпадение в коде, функция заполняет массив номером и таксонами описания с присвоением минимального и максимального балла для каждого вида. Если для вида информация отсутствует, скрипт выдает «-Infinity, Infinity;». После программа переходит к следующему описанию из серии. Когда описания заканчиваются, программа выводит собранный массив на html-страницу.

Функция «ramenbase(e)» выполняет те же самые операции, только для каждого описания в серии формирует массив с минимальными и максимальными значениями баллов. Из массива минимальных баллов отбирает наибольший, из массива максимальных — наименьший. Итогом выпадает таблица с номером описания, минимальным и максимальным значением на экологической шкале.
Больше меньшего, меньше большего

Обе функции потребляют на вход одинаковые аргументы: «rich» — богатство и засоленность почвы, «water» — влажность почвы, «waterwave» — переменность увлажнения, «alluvium» — аллювиальность почвы и «degrade» — пастбищная дегрессия.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
// Полный расчет (значения для всех видов)
function ramenall(e){
 
  for(var a=0; a<descript.length; a++)
  {
	  var gbo = descript[a]; // Текущее описание в обработке
	  var spec=[];           // Вид
	  var pokr=[];           // Проективное покрытие в процентах
	  var pokrball=[];       // Балл покрытия по Раменскому
	  var spectable=[];      // Обертка для spec, pokr, pokrball
 
// Перевод % покрытия в % покрытия по Раменскому	  
	  for(var key in gbo.grass.cover)
	  {
		  spec.push(key);
		  pokr.push(gbo.grass.cover[key]);
		  if(gbo.grass.cover[key]>=8.0 &&
				gbo.grass.cover[key]<100){pokrball.push(8.0);}
		  if(gbo.grass.cover[key]>=2.5 &&
				gbo.grass.cover[key]<8.0){pokrball.push(2.5);}
		  if(gbo.grass.cover[key]>=0.3 &&
				gbo.grass.cover[key]<2.5){pokrball.push(0.3);}
		  if(gbo.grass.cover[key]>=0.1 &&
				gbo.grass.cover[key]<0.3){pokrball.push(0.1);}
		  if(gbo.grass.cover[key]>=0.0 &&
				gbo.grass.cover[key]<0.1){pokrball.push(0.0);}
		}
 
// Заполнение таблицы для сравнения со шкалами    
	  spectable.push(spec);
	  spectable.push(pokr);
	  spectable.push(pokrball);
 
// Сравнение со шкалами   
	  for(var i=0; i<spec.length; i++)
	  {
		  for(var k=0; k<ramen.length; k++)
		  {
			  if(spectable[0][i]==ramen[k][0] && //Код вида
				ramen[k][2]==e && // Шкала (указана в HTML)
				ramen[k][3]==false && // Природная зона (игнорируется)
				ramen[k][4]==false && // Тип почвы (игнорируется)
				ramen[k][5]==spectable[2][i] // Проективное покрытие
				)
				{
// Публикация отчета в HTML
				var str = document.getElementById('tableResult');
				var add = str.insertRow(-1);
				var addTr = document.createElement("tr");
				var addTd = document.createElement("td");
					addTd.innerHTML=descript[a].note+", ";
					addTr.appendChild(addTd); // Номер описания
				var addTd = document.createElement("td");
					addTd.innerHTML=ramen[k][1]+", ";
					addTr.appendChild(addTd); // Название вида
				var addTd = document.createElement("td");
					addTd.innerHTML=spectable[1][i]+"%,      ";
					addTr.appendChild(addTd); // Покрытие
				var addTd = document.createElement("td");
					addTd.innerHTML=ramen[k][6]+",      ";
					addTr.appendChild(addTd); // Максимум
				var addTd = document.createElement("td");
					addTd.innerHTML=ramen[k][7];
					addTr.appendChild(addTd); // Максимум
				str.appendChild(addTr);
				};
		};
	};
};
}
 
// Краткий расчет (классический, результаты для пробной площади в целом)
function ramenbase(e){
	for(var a=0; a<descript.length; a++)
	{
		var gbo = descript[a];
		var spec=[];
		var pokr=[];
		var pokrball=[];
		var spectable=[];
 
		for(var key in gbo.grass.cover)
		{
			spec.push(key);
			pokr.push(gbo.grass.cover[key]);
			if(gbo.grass.cover[key]>=8.0 &&
				gbo.grass.cover[key]<100){pokrball.push(8.0);}
			if(gbo.grass.cover[key]>=2.5 &&
				gbo.grass.cover[key]<8.0){pokrball.push(2.5);}
			if(gbo.grass.cover[key]>=0.3 &&
				gbo.grass.cover[key]<2.5){pokrball.push(0.3);}
			if(gbo.grass.cover[key]>=0.1 &&
				gbo.grass.cover[key]<0.3){pokrball.push(0.1);}
			if(gbo.grass.cover[key]>=0.0 &&
				gbo.grass.cover[key]<0.1){pokrball.push(0.0);}
		}
 
		spectable.push(spec);
		spectable.push(pokr);
		spectable.push(pokrball);
 
		var ecoscalemin=[];// Шкала минимумов
		var ecoscalemax=[];// Шкала максимумов
 
		for(var i=0; i<spec.length; i++)
		{
			for(var k=0; k<ramen.length; k++)
			{
				if(spectable[0][i]==ramen[k][0] &&
				ramen[k][2]==e &&
				ramen[k][3]==false &&
				ramen[k][4]==false &&
				ramen[k][5]==spectable[2][i]
				)
				{
					ecoscalemin.push(ramen[k][6]);
					ecoscalemax.push(ramen[k][7]);
				};
			};
		};
 
		var str = document.getElementById('tableResultKratk');
		var add = str.insertRow(-1);
		var addTr = document.createElement("tr");
		var addTd = document.createElement("td");
			addTd.innerHTML=descript[a].note+",  ";
			addTr.appendChild(addTd); // Номер описания
		var addTd = document.createElement("td");
 
			// Максимальное значение шкалы минимумов
			addTd.innerHTML=Math.max.apply(Math, ecoscalemin)+",  ";
			addTr.appendChild(addTd); // Минимум
		var addTd = document.createElement("td");
 
			// Минимальное значение шкалы максимумов
			addTd.innerHTML=Math.min.apply(Math, ecoscalemax)+";  ";
			addTr.appendChild(addTd); // Максимум
		str.appendChild(addTr);
	};
}

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

Финализировать эту эпопею нужно тремя вопросами: почему JavaScript?, что дальше? и как использовать полученные результаты анализа?. JavaScript — потому что эти расчеты иногда требуется выполнять на чужих компьютерах без установленного R, Wine или другого софта. Что дальше — не знаю. Есть пару идей, но я три года ничего не менял, могу еще три года ничего не менять. А как использовать результаты я не расскажу, поскольку строки этой статьи все-равно никто не увидит. Программисты бросят читать на втором слове, а ботаники на четвертом.


По адресу городшахты.рф/source/fleur/ лежит готовая к использованию программа. Можете указать ссылку на свой набор геоботанических описаний в указанном выше формате и рассчитать богатство, увлажнение, переменность водного режима, аллювиальность и пастбищную дегрессию почв.
Полноценное теоретическое обоснование, альтернативные методы и материалы для контроля доступны в книге: Л. Г. Раменский, И. А. Цаценкин, О. Н. Чижиков, Н. А. Антипин «Экологическая оценка кормовых угодий по растительному покрову» Всесоз. науч. -исслед. ин-т кормов им. В. Р. Вильямса. М. : Сельхозгиз , 1956 470, [2] с.: ил., 1 л. граф.

Про OpenStreetMap

Про OpenStreetMap

Настоящая статья являет собой интервью, которое прислал Валерий Трубин.
Текст опубликован без изменений. Мнение автора может не совпадать с моим.
Н.К.

Сергей Голубев — натуралист, опытный осмер и автор блога «Город Шахты». Его размышления об OpenStreetMap всегда неожиданны, а потому вдвойне интересны. Он умеет найти необычный ракурс и на привычное посмотреть под другим углом. Зачем OSM нужны катастрофы, почему не существует его сообщества, а также какое будущее ждет этот проект — обо всем этом он рассказал в интервью.

— Как вы узнали о существовании OpenStreetMap?
— В 2007 или 2009 году по работе мне нужна была самая примитивная подложка для карты, на которой были бы основные города, линии рек и пр. Тогда еще не было QGIS, все делали в ArcView GIS 3.2a. Это сейчас не возникает вопросов, откуда в случае чего брать данные, чтобы не обводить их самому, а тогда это было целой задачей. Так я познакомился с OSM. Помимо рабочей необходимости у меня, конечно же, было и чисто человеческое любопытство. Когда появляется какой-то новый проект, всегда интересно его изучить, посмотреть как он работает.

— Какое тогда было сообщество OSM? Как вы в него вливались?
— Честно говоря, до сих пор не влился в него, потому что сообщество OSM – мнимое явление, его на самом деле не существует. Все то, что называют «Сообществом OSM» — это всего 20-30 человек, которые проявляют активность в Telegram’e и на форуме. Это ничтожное число от того количества людей, которые действительно мапят. Ведь большинство просто открывают JOSM или iD и ни в каких дискуссиях не участвуют. Но с теми 30-ми, которые открыты общению, я познакомился в 2014 году, после того как зарегистрировался в OSM. Кстати, к тому времени на GIS-Lab’e уже было большое активное сообщество, интересующихся картографией и всем тем, что с ней связано. На GIS-Lab’e я с активничал с 2008-2009 года.

— Почему сообщество OSM в России такое немногочисленное?
— Во-первых, Россия — большая страна, потому сложно объединить между собой людей, сделать так, чтобы они могли регулярно встречаться. К тому же, такие расстояния накладывают отпечаток и на характер — нашим людям труднее дается общение. Во-вторых, нужно понимать, что OSM — технический проект, причем достаточно сложный, потому нет смысла встречаться и обсуждать, как кто-то сегодня затегетировал домики. Это и так всем понятно. Что будут обсуждать люди, которые хоть немного интересуются ГИС-технологиями? Особенности серверов, код Overpass’а, картостили и прочие заморочки. Но это не волнует большинство.

Все это приводит к тому, что сообщество OSM в России очень маленькое. И я не думаю, что оно увеличится, если проект будет существовать так, как он существует сейчас.

— А как сейчас существует проект? Что с ним не так?
— OSM сейчас находится в стагнации. Это период мнимого расцвета, но на самом деле — глубокого кризиса, который в дальнейшем будет только усугубляться. И я считаю, что с уходом Стива Коста проект стал более технологичным, но менее живым. И я говорю про проект в целом, потому что, то, что происходит в российском сегменте — только отражение общемировой динамики.

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

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

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

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

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

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

— Чем полезен обществу OSM?
— От правок OSM есть одна неоспоримая польза — это форма релакса для того человека, который эти правки вносит. Со всем остальным можно поспорить. Считаю, что уже сейчас домики может обрисовывать какой-нибудь автомат, например, — нейронная сеть. Поэтому те человеко-часы, которые тратятся на внесение элементарных линий, ничем другим, кроме как особой формой отдыха и развлечения самих осмеров, не могу объяснить. Есть отдельные хорошие прецеденты — гуманитарная команда OSM. Это невероятно прекрасный и полезный проект. Хорошие проекты по созданию карт были и в России. Несколько раз создавались карты по запросам различных организаций: скорой помощи и других. Но в целом подобные явления — побочный продукт, нежели основной. Вообще, общественное благо — это популистский термин, который обычно употребляют, когда ничего другого не могут привести в пример.

— Кому тогда полезен OSM?
— На OSM давно зарабатывают. Из крупных проектов — Mapbox, Maps.Me, NextGIS. Даже 2GIS, который заявляет, что планирует отказаться от OSM, на данный момент использует его данные. Не сказать, что таких компаний много, но учитывая узость сегмента, вполне себе приемлемо. Но стоит отдать должное, что некоторые компании, которые зарабатывают на OSM, потом часть своего дохода тратят на развитие его инфраструктуры. Ну, а те, кому нравится мапить — они получают удовольствие и вносят данные в проект. Получается вот такой симбиоз.

— Чем же тогда OSM существенно отличается от «Народной Яндекс.Карты»?
— Я считаю, что у них много общего. Причем НЯК во много раз круче OSM, особенно в том, что касается работы с пользователями.

Если задать этот вопрос тому самому «Сообществу OSM», которое состоит из 20-30 технически подкованных людей, то они начнут говорить про открытые данные, открытую инфраструктуру и пр. Это всё, конечно, замечательно, но тем людям, которые непосредственно вносят правки, им без разницы какие это данные: открытые или закрытые. Когда открываешь редактор Яндекса, где все просто и удобно, и открываешь редактор OSM, тот же JOSM – это безумие для неподготовленного человека, то видишь все отличия сразу и без лишних разговоров.

Если перефразировать один известный анекдот, то «Народная Яндекс.Карта» — это примерно следующая история: приходишь в аэропорт, садишься в огромный прекрасный самолет, невероятно красивые стюардессы подают напитки, мягкие кресла — все замечательно, но ровно до той поры пока ты молчишь, потому что если заикнешься, что самолет летит не туда, то тут же придут амбалы и выкинут тебя из самолета. OSM – это кукурузник, на котором можно лететь куда угодно, но на взлетную площадку надо принести свои детали от самолета и суметь их установить. В этом вся разница.

— Планируешь переходить в НЯК?
— Нет. Ради интереса попробовал, обвел несколько зданий, но это исключительно с целью, чтобы посмотреть, чем НЯК отличается от OSM, как там всё устроено. Но я бы не перешел, потому что те правки, которые я вношу, вношу для себя и планирую ими пользоваться в дальнейшем: скачивать, обрабатывать и пр. Мне нет никакого смысла вносить эти данные в Яндекс, тому что там я ими никак не смогу воспользоваться.

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

— Какие альтернативные пути развития? Кроме как все удалить и заново начать.
— Все удалить и заново начать — радикальный путь. Нужно идти в ту сторону, где ни Яндекс, ни Google не способны предоставить услуги. Я давно говорю, что картами пользуются абсолютно разные люди, в том числе и те, кто имеет проблемы со зрением. Так почему бы не создать несколько разных картостилей, например, для дальтоников или слабовидящих? Почему бы не создать отдельно карту водных угодий? Где были бы реки, озера и все прочее. Почти на всех известных электронных картах невозможно найти ни одной реки пока ты не увеличишь масштаб. Бог с ним, с увеличением зума. Нет направления течения! Казалось бы, самое простое! И это в России, где огромное количество людей передвигаются по воде.

— Так куда именно нужно идти OSM?
— Не надо быть лучше Google или Яндекса, надо быть другим. Тогда все будет хорошо. Сейчас OSM из независимого проекта, который имел все шансы прекрасно развиваться, превратился в базу данных, которую используют коммерческие компании. И всё это ожидает того момента, когда этот нарыв прорвется или рассосется по другим проектам, либо вовсе перетечет в другой формат.

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

Отчасти в этом виноваты демократические подходы принятые в OSM – все нужно обсудить и со всеми согласовать. Пока идут бесконечные обсуждения, продолжают копиться проблемы и тормозить развитие проекта. Почему бесконечные:? Всегда найдется тот, кто скажет, что он не согласен и против.

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

— Это вы про традиции отечественного сообщества OSM или зарубежного?
— У зарубежных коллег гораздо больше того, что крутится вокруг OSM. Мне у них нравится то, что не связано с технологиями и железом. Это вопросы разных картовстреч, гуманитарной команды.

— Почему такое различие?
— У нас в OSM идут люди технического склада ума, а там — расположенные к гуманитарным наукам. Думаю, вы знаете, как у нас технари традиционно относятся к гуманитариям? Поэтому, наверное, у нас больше интерес к чистому IT. Каков поп, таков и приход.

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

Зачастую просто люди обманывают себя и говорят о том, чего нет. Я не верю, что OSM спасет мир. Хорошо что он есть, но не надо переоценивать его. К тому же, OSM фактически сделал все другие открытые картографические бессмысленными. Негативную роль OSM обычно замалчивают.

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

Как OSM навредил? Даже не сам OSM, а инфраструктура вокруг него: легкость скачивания данных, QGIS и Overpass — благодаря этому в картографию неожиданно пришли программисты. Ушли картографы и пришли визуализаторы. Сейчас именно карт, в прежнем понимании слова, нет. Есть визуализации различных наборов данных. Совершенно забыто такое понятие, как генерализация. Сейчас ей стало то, что делает Mapbox, когда на разных масштабах и зумах подгружаются не все точки с полигонов, из-за чего карты становятся уродливыми. С 16 по 18 зум компании еще стремятся сделать карту красивой, а все остальное — чудовищно. Отмечу, что такие карты появляются не потому, что такого просит рынок, а из-за того, что мало кто знаком с хорошими примерами.

— О каких хороших примерах вы говорите?
— Можно взять любую карту до 1990 года и посмотреть на качество ее исполнения. Это, прежде всего, подписи и шрифты.

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

— Как можно привлечь в RU-OSM людей не с техническим складом ума?
— В чатик и на форум? Не знаю. Мне кажется, люди приходят туда, когда у них возникает какой-то конкретный вопрос по OSM. Что же касается появления новых осмеров в проекте, то для этого надо, чтобы как можно больше людей знало о существовании OSM. Будем честны, люди о нем не знают. И все разговоры о том, что OSM такой популярный и все о нём давно знают, заканчиваются вместе с московской кольцевой автодорогой.

О том, что у Яндекса или Google есть карты, пользователь узнаёт почти сразу, как только воспользуется этими поисковиками. Откуда он должен узнать о существовании OSM и его преимуществах?

— Что скажете в завершении беседы?
— Viva la revolucion! Если не хотите революционных изменений, тогда надо делать хотя бы то, что не делает никто другой. Мапить домики — это уже моветон. Надо мапить то, чего нет нигде на других картах. Тогда это будет круто. Или пройтись по улице и замапить деревья с указанием породы — вот это круто. Этого точно не будет ни на одной карте, а если пройти по улице и замапить номера домов — для этого есть Яндекс или 2GIS.

Беседовал Валерий Трубин

Анри Пуанкаре

Месье Пуанкаре, крутите барабан

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

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

Мы настолько привыкли к удобству математики, что часто забываем ее основную суть: всякие вычисления производятся не над самими объектами, а над их математическими моделями. Школьное «одно яблоко плюс одно яблоко равно два яблока» не имеет отношения к реальности: расчеты ведутся над образами этих яблок, этакими идеями яблок платоновского мира. Реальность же такова, что при идентичных операциях сложения одному достается 400 грамм яблок, а другому 100 грамм сморщенных сухофруктов. Не будем вдаваться тут в проблемы нуль-меры и количественных измерений, иначе в рассуждениях мы не сможем дойти до логического финала.

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

В недавней бытовой переписке решив сослаться на идеи Б.В.Гнеденко я освежил, к своей радости, модель рулетки Анри Пуанкаре, которая служит прекрасным инструментом для изучения сути вероятности. Представим себе круг, поделенный на сектора и стрелку, которая свободно вращается в этом круге. Или же равнозначный круг, который обращается вокруг неподвижной стрелки (элемент 1 на рисунке). Физической реализацией такой модели является известный барабан из «Поля Чудес». Но для простоты мы оставим на нем лишь два сектора (A и B), каждый из которых будет занимать ровно половину круга. Какова вероятность того, что стрелка остановится в одном из секторов?

Диск Пуанкаре и пыль Кантора

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

Поскольку вероятность — это прежде всего свойство события, определимся с перечнем событий, которые возникают в модели Пуанкаре и причинами их вызывающими. Очевидно, что последние связаны исключительно с физическими свойствами модели, а именно шириной стрелки (элемент 3. на рисунке) и зоны перехода от сектора A к сектору B. В идеальном случае, оба этих значения будут равны нулю, но в реальности мы сталкиваемся с тремя видами событий (4.):

  1. Ширина стрелки больше одного из секторов. При каждом обращении стрелка будет указывать одновременно на два сектора. В этом случае классическое понятие вероятности теряет смысл, поскольку вероятность указания стрелки на каждый из секторов равен единице (P=1+1=2);
  2. Ширина стрелки равна одному из секторов. Здесь вероятность имеет смысл, но принципиально не может быть определена, поскольку совпадая ровно с сектором, мы не можем гарантировать того, что условие 1. не нарушится при более детальной оценке. Вообще, такое событие требует отдельного рассмотрения и трепетного подхода к определению числа как такового.
  3. Ширина стрелки меньше одного сектора. В этом случае возможны два варианта:
    3.1. Стрелка шире области перехода между секторами. В этом случае мы не можем говорить о возможности расчета вероятности, поскольку в нашей модели возможно событие, указанное в пункте 1. — стрелка одновременно указывает на два сектора.
    3.2. Стрелка уже области перехода между секторами. И в этом случае мы можем получить указание стрелки на два объекта сразу (если она остановится в переходной зоне между двумя секторами.

Во всех случаях классический подход к определению вероятности (P=m/n) лишен смысла, поскольку имея два возможных события мы не принимаем в расчет ситуацию, когда эти события выполняются одновременно (либо в иной трактовке — не выполняется ни одно из событий). В случае с монеткой — мы полагаем, что вероятность выпадения одной из сторон составляет 0,5, игнорируя возможность того, что монетка встанет на ребро (сломается, укатится, зависнет в воздухе…). Стандартное понимание вероятности подразумевает, что Pa+Pb = 1, в то время как для реальности соответствует запись Pa+Pb+Pab = 1.

Обычно, событие Pab настолько редко, что им можно пренебречь. Но что, если оно более вероятно, чем суммарное наступление событий Pa и Pb? Представим себе, что наш круг разделен на сегменты по принципу пыли Кантора: круг делится пополам на сегменты A и B, затем из каждого сегмента часть меняет значение на противоположное, после этого часть этой части меняет значение и так итеративно до бесконечности? Как рассчитать вероятность события, которое при детальном рассмотрении оказывается множеством разных событий?

Обратимся к нашей формуле P=m/n на примере измерения длины отрезка (элемент 6. на рисунке).

Формула вероятности

Не вдаваясь в топологические подробности (их легко можно посмотреть в работах Мандельброта, Шредера, Федера, Хаусдорфа, Минковского и других авторов) кратко замечу, что всякое геометрическое измерение можно представить как покрытие объекта элементарными (неделимыми) метриками единичной величины. В этом случае размер объекта будет равен количеству таких метрик в степени размерности (точка а0, прямая a1, площадь а2 и т.д.).

В том случае, когда количество метрик конечно, вероятность конгруэнтна размеру: если на десяти отрезках три «ложатся» на объект, то длина отрезка = 3, а вероятность его обнаружения в метрике 3/10. При этом вероятности так же присуща размерность, как и расстоянию. Соответственно, формула P=m/n — есть лишь частный случай для a=1, а в общем виде формула вероятности выглядит как P=(m/n)a. В справедливости этого утверждения легко убедиться на примере расчета вероятности заполнения некоторого поля плоскостью (элемент 7. на рисунке)

Но как быть, если число метрик не ограничено? Как измерить длину отрезка, образованного отсечением прямой, разбитой на канторову пыль? Соответственно, как рассчитать вероятность встречи этой пыли в одной из метрик? Иными словами, поскольку каждая метрика является опытом («есть в нем объект или нет»), то как рассчитать вероятность если число опытов бесконечно? Я не вижу иного способа, кроме асимптотического.

Но более самого расчета длины/вероятности интересно то, что размер метрики является отношением возможного числа опытов (объем пространства измерений) к числу проведенных опытов (формула 9.) Нехитрые математические манипуляции показывают, что вероятность события, равно как и размер объекта в пространстве определяются формулой 10. Причем в ситуации, когда N=n, т.е. проведены все возможные опыты, формула принимает частный вид P=m/n.

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

Монета 50 рублей

В таблице приведены результаты бросаний монетки. Единица — орел, ноль — решка. Задача выглядит следующим образом: мы подбросили монетку 25 раз и получили некоторую вероятность выпадения орла. Какова вероятность выпадения орла после пятидесяти бросков?

В классическом случае (P=m/n) вероятность выпадения орла после 25 испытаний составила примерно 0,6. Проследив тренд мы можем предположить, что к пятидесятому броску эта вероятность немного возрастет (до 0,63). При расчете по предложенной формуле, вероятность выпадения орла на двадцать пятом броске составила примерно 0,36 и к пятидесятому увеличится до 0,48

Здесь и далее синяя линия — накопленная вероятность по классической формуле, красная линия — накопленная вероятность по формуле 10.

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

Теперь вероятность в обоих случаях примерно одинакова (0,82), но обратите внимание на коэффициенты достоверности аппроксимации.

В реальности после пятидесяти бросков монеты изменение вероятности выпадения орла происходило следующим образом:

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

Рассмотрим более практичный пример, связанный с прогнозом вероятности изменения температуры воздуха в городе Шахты. За прошедшие дни декабря была отмечена следующая температура воздуха: -3, -2, -1.5, -1.29, 0.29, -0.17, -0.25, -1.4 градусов. Средняя температура составила -0.97 градусов. Подсчитаем вероятность того, что в ближайшие дни наступит потепление. Для этого переведем данные о температуре в бинарный вид (0 — холоднее -0.97 градусов, 1 — теплее -0.97 градусов): 0,0,0,0,1,1,1,0.

Классическая формула через неделю обещает нам потепление с высокой вероятностью (0,91). Предложенная формула 10. говорит о том, что потепление через неделю скорее маловероятно (0,32). Конечно же, не стоит относиться к такому прогнозу серьезно (я еще не окончательно сошел с ума). Предложенный пример следует рассматривать исключительно как полушутливое использование данных с показательным распределением. Во всяком случае, пока не будет доказано обратное.

Из всего сказанного ценна не столько формула, которую нужно всячески критиковать и тестировать, сколько важные соображения:

  1. Теория вероятностей это лишь математическая модель и не стоит об этом забывать. Реальность гораздо сложнее и многограннее, чем безальтернативный выбор из двух вариантов (вспоминается аксиома Эскобара).
  2. Классическая теория вероятностей не работает в ситуациях, когда пространство событий нечетко, либо имеет дробную топологическую размерность. Более того, вероятность наступления события зависит от выбранных единиц измерения
  3. Рассматривая два события в привычной трактовке вероятности, не учитывается эмергентная связь между ними.
  4. Вероятность может применяться и применяется для оценки размеров, но лишь в случае измерения Эвклидовых фигур.
  5. Важно не только количество проведенных опытов, но и то, сколько опытов предполагается, либо возможно провести (объем пространства измерений). Если мы получили одинаковый результат в десяти опытах, вероятность такого результата неодинакова для случая, если опытов предполагалась всего десять и случая с тысячами опытов.

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

P.S. Ян, спасибо за файл.

Деревья на пробной площади

Проба номер три

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

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

Не думайте, что я вещаю из глубин пессимизма и депрессии. Наоборот, меня такая ситуация радует и любые попытки позитивных изменений я встречаю тревожным скепсисом: про возрождение лесного хозяйства в России обычно вспоминают отправляясь на постройку очередного ГУЛАГа.

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

Перечеты проведены разными исследователями в 2002 (З.Я. и В.З. Нагимовы), 2008 (Г.М. Кукуричкин) и 2018 году на ограниченной площади в 0,4 гектара. Все деревья на площади пронумерованы, на каждое дерево нанесена линия на высоте которой измеряется диаметр ствола. Изначально, эта высота должна составлять ровно 1,3 метра, но спустя шестнадцать лет, уровень ее колеблется между 1.0-1.7 м от шейки корня. Предположительно, это можно объяснить динамикой микрорельефа, хотя состояние пробы в целом создает впечатление того, что при закладке создатели были в говно пьяны. Древостой сложен лиственницей, пихтой, кедром, елью и березой, развит подрост и подлесок, живой напочвенный покров представлен лесными кустарничками и видами эвтрофных местообитаний (кислица, аконит, майник и др.). Если не смотреть на породный состав — типичный буреломный кисличник.

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

ele;num;d02;h02;l02;d08;d18;h18;l18 abies;1;19;NA;TRUE;20;21;NA;TRUE picea;2;38;NA;TRUE;38;37;NA;FALSE abies;3;12;NA;TRUE;12;13;NA;TRUE

Таблица целиком, пояснения и обозначения заголовков
Заголовки:
ele — (текст) — порода;
num — (текст) — номер в перечете, нанесен на ствол дерева;
d02 — (число) — диаметр в см ствола согласно перечету 2002 года;
h02 — (число) — высота в м ствола согласно перечету 2002 года;
l02- (логическое) — состояние дерева в 2002 году. TRUE — живое, FALSE — мертвое;
d08 — (число) — диаметр в см ствола согласно перечету 2008 года;;
d18 — (число) — диаметр в см ствола согласно перечету 2018 года;;
h18 — (число) — высота в м ствола согласно перечету 2018 года;
l18- (логическое) — состояние дерева в 2018 году. TRUE — живое, FALSE — мертвое;

Породы:
abies — пихта;
betula — береза;
larix — лиственница;
picea — ель;
pinsib — кедр;
none — дерево, по разному определенное в разные перечетах. Порода не установлена;

Прочее:
NA — нет данных

При составлении таблицы:
1. Отсутствующие значения (дерево выпало, еще не выросло, пропущено в ходе перечета или замер для него не проводился) обозначаются как NA;
2. В качестве названия вида используется название данное в перечете 2002 года в случае:
— если оно соответствует названию вида по перечету 2018 года
— если при перечете 2018 года это дерево было представлено сухостоем или валежом (полагая, что ошибка в определении живого дерева менее вероятна);
3. Если название дерева по перечету 2002 года не соответствует названию дерева по перечету 2018 года, дерево считается неназванным (неизвестно, кто именно допустил ошибку);
4. Значения диаметров и высот округлены до целых чисел (процедура необязательная, но позволяет избежать случайных ошибок и упрощает работу);
5. Состояние деревьев принимается бинарным (живое/мертвое). Любое дробное деление при ограниченности выборки приведет лишь излишней работе и недостоверным оценкам;

Таблица данных:
ele;num;d02;h02;l02;d08;d18;h18;l18
abies;1;19;NA;TRUE;20;21;NA;TRUE
picea;2;38;NA;TRUE;38;37;NA;FALSE
abies;3;12;NA;TRUE;12;13;NA;TRUE
picea;4;24;NA;TRUE;24;22;NA;FALSE
picea;5;47;NA;TRUE;46;42;NA;FALSE
pinsib;6;37;NA;TRUE;28;32;NA;TRUE
abies;7;11;NA;TRUE;12;13;NA;TRUE
picea;8;22;NA;TRUE;24;24;NA;FALSE
none;9;14;NA;FALSE;14;13;NA;FALSE
picea;10;31;27;TRUE;32;31;NA;FALSE
picea;11;19;NA;TRUE;18;20;NA;FALSE
picea;12;17;NA;TRUE;16;18;NA;FALSE
picea;13;17;NA;TRUE;16;16;NA;FALSE
betula;14;22;NA;TRUE;22;24;NA;TRUE
abies;15;14;NA;TRUE;14;15;NA;TRUE
abies;16;24;NA;TRUE;24;26;NA;TRUE
abies;17;15;16;TRUE;16;16;NA;TRUE
abies;18;18;NA;TRUE;18;17;NA;FALSE
picea;19;41;NA;TRUE;40;40;NA;FALSE
picea;20;36;NA;TRUE;36;35;NA;FALSE
pinsib;21;22;NA;FALSE;20;25;NA;FALSE
none;22;15;NA;TRUE;16;16;NA;TRUE
picea;23;9;NA;TRUE;8;9;NA;TRUE
none;24;21;NA;FALSE;20;NA;NA;TRUE
larix;25;67;NA;TRUE;68;66;NA;TRUE
picea;26;25;NA;TRUE;24;24;NA;FALSE
picea;27;48;NA;TRUE;48;49;NA;FALSE
picea;28;27;NA;TRUE;26;27;NA;FALSE
picea;29;42;NA;TRUE;42;41;30;FALSE
larix;30;56;NA;TRUE;54;56;NA;FALSE
picea;31;20;NA;TRUE;20;20;NA;FALSE
picea;32;37;NA;TRUE;36;36;NA;FALSE
larix;33;54;NA;TRUE;54;58;39;TRUE
larix;34;28;NA;TRUE;28;28;NA;TRUE
picea;35;49;NA;TRUE;48;44;NA;FALSE
picea;36;38;27;TRUE;38;39;NA;FALSE
picea;37;13;NA;TRUE;12;NA;NA;TRUE
pinsib;38;6;NA;TRUE;6;6;NA;FALSE
abies;39;14;NA;FALSE;14;NA;NA;TRUE
abies;40;15;NA;TRUE;14;NA;NA;TRUE
pinsib;41;40;26;TRUE;40;39;NA;FALSE
abies;42;13;NA;TRUE;14;16;NA;TRUE
picea;43;27;24;TRUE;26;28;NA;TRUE
abies;44;9;NA;TRUE;10;13;NA;TRUE
picea;45;28;NA;TRUE;28;27;NA;FALSE
picea;46;35;NA;TRUE;34;36;NA;FALSE
abies;47;29;NA;TRUE;20;23;23;TRUE
picea;48;44;NA;TRUE;44;44;NA;FALSE
betula;49;18;NA;TRUE;18;22;NA;TRUE
picea;50;12;NA;TRUE;12;12;NA;TRUE
betula;51;28;NA;TRUE;28;31;NA;TRUE
abies;52;16;NA;TRUE;16;20;NA;TRUE
picea;53;14;NA;TRUE;16;18;NA;TRUE
abies;54;17;NA;TRUE;18;20;NA;TRUE
betula;55;30;NA;TRUE;30;30;NA;TRUE
pinsib;56;39;NA;TRUE;40;40;NA;FALSE
betula;57;16;NA;TRUE;16;16;NA;TRUE
abies;58;20;NA;TRUE;20;23;NA;TRUE
abies;59;12;NA;TRUE;12;15;NA;TRUE
betula;60;26;NA;TRUE;24;NA;NA;TRUE
betula;61;30;NA;TRUE;30;29;NA;TRUE
picea;62;16;NA;TRUE;16;18;NA;TRUE
betula;63;26;NA;TRUE;28;24;NA;FALSE
picea;64;8;NA;TRUE;8;11;NA;TRUE
larix;65;70;NA;TRUE;72;70;NA;TRUE
betula;66;17;NA;TRUE;18;19;NA;TRUE
betula;67;13;NA;TRUE;12;13;NA;FALSE
abies;68;21;17;TRUE;22;25;26;TRUE
pinsib;69;12;NA;TRUE;12;13;16;TRUE
pinsib;70;42;24;TRUE;42;44;NA;FALSE
abies;71;10;NA;TRUE;12;13;13;TRUE
abies;72;17;NA;TRUE;18;20;19;TRUE
abies;73;14;NA;TRUE;14;16;19;TRUE
larix;74;42;29;TRUE;42;42;34;TRUE
larix;75;63;NA;TRUE;64;65;NA;TRUE
larix;76;60;NA;TRUE;62;58;37;TRUE
picea;77;29;25;TRUE;28;28;NA;FALSE
picea;78;35;NA;TRUE;38;36;NA;FALSE
abies;79;19;NA;TRUE;18;20;NA;TRUE
abies;80;10;NA;TRUE;10;12;NA;TRUE
picea;81;33;NA;TRUE;34;34;NA;FALSE
abies;82;10;NA;TRUE;10;12;NA;TRUE
abies;83;9;NA;TRUE;10;12;16;TRUE
larix;84;35;29;TRUE;36;37;NA;TRUE
abies;85;18;NA;TRUE;18;NA;NA;TRUE
picea;86;24;NA;FALSE;24;NA;NA;TRUE
abies;87;13;15;TRUE;14;14;12;TRUE
larix;88;42;NA;TRUE;40;41;33;TRUE
larix;89;60;NA;TRUE;62;60;32;TRUE
picea;90;18;NA;TRUE;18;19;NA;FALSE
larix;91;56;NA;TRUE;54;57;NA;TRUE
larix;92;60;NA;TRUE;60;58;35;TRUE
larix;93;22;NA;FALSE;22;19;NA;FALSE
larix;94;68;NA;TRUE;70;66;NA;TRUE
pinsib;95;21;20;TRUE;22;23;NA;TRUE
picea;96;29;NA;TRUE;28;29;NA;FALSE
larix;97;52;NA;TRUE;54;50;NA;TRUE
picea;98;31;NA;FALSE;30;32;NA;FALSE
abies;99;22;NA;TRUE;22;24;NA;TRUE
larix;100;62;NA;TRUE;64;58;NA;TRUE
larix;101;61;NA;TRUE;62;60;NA;TRUE
picea;102;50;NA;TRUE;48;48;NA;FALSE
picea;103;41;NA;TRUE;40;42;NA;FALSE
picea;104;38;NA;TRUE;38;36;NA;FALSE
picea;105;35;NA;TRUE;34;35;NA;FALSE
picea;106;19;NA;TRUE;20;20;NA;FALSE
abies;107;27;NA;TRUE;26;28;27;TRUE
abies;108;23;NA;TRUE;22;20;NA;FALSE
abies;109;15;NA;TRUE;16;17;NA;TRUE
abies;110;27;NA;TRUE;28;28;NA;TRUE
abies;111;14;NA;TRUE;16;17;NA;TRUE
abies;112;21;NA;TRUE;20;22;NA;TRUE
abies;113;25;NA;TRUE;26;28;NA;TRUE
abies;114;25;NA;TRUE;26;26;NA;TRUE
abies;115;24;NA;TRUE;24;26;NA;TRUE
abies;116;21;NA;FALSE;NA;NA;NA;TRUE
abies;117;21;NA;TRUE;20;23;NA;TRUE
abies;118;20;NA;TRUE;20;22;NA;TRUE
abies;119;17;NA;TRUE;18;19;NA;TRUE
picea;120;16;NA;TRUE;16;16;NA;TRUE
pinsib;121;14;NA;TRUE;14;16;NA;TRUE
abies;122;12;NA;TRUE;12;14;NA;TRUE
abies;123;13;NA;FALSE;12;14;NA;FALSE
pinsib;124;43;NA;TRUE;44;46;NA;TRUE
picea;125;26;NA;TRUE;28;28;NA;TRUE
pinsib;126;24;NA;TRUE;26;29;NA;TRUE
larix;127;21;NA;TRUE;22;21;NA;TRUE
abies;128;19;NA;TRUE;20;20;NA;TRUE
picea;129;19;NA;TRUE;20;21;NA;TRUE
picea;130;22;NA;FALSE;22;NA;NA;TRUE
abies;131;13;NA;TRUE;12;14;NA;TRUE
picea;132;20;NA;TRUE;22;24;NA;TRUE
picea;133;22;NA;FALSE;20;NA;NA;TRUE
picea;134;22;23;TRUE;22;25;NA;TRUE
pinsib;135;34;22;TRUE;34;36;NA;TRUE
picea;136;41;27;TRUE;42;42;NA;TRUE
abies;137;12;NA;TRUE;12;14;NA;TRUE
abies;138;11;NA;TRUE;12;12;18;TRUE
larix;139;42;NA;TRUE;44;47;NA;TRUE
picea;140;24;NA;TRUE;24;26;NA;TRUE
abies;141;20;NA;TRUE;20;21;NA;TRUE
larix;142;55;NA;TRUE;54;56;NA;TRUE
pinsib;143;28;NA;TRUE;26;23;NA;TRUE
abies;144;17;13;TRUE;18;19;NA;TRUE
pinsib;145;32;NA;TRUE;22;17;NA;TRUE
picea;146;23;22;TRUE;24;28;NA;TRUE
abies;147;26;21;TRUE;NA;NA;NA;TRUE
abies;148;15;NA;TRUE;16;19;NA;TRUE
abies;149;12;NA;TRUE;12;14;NA;TRUE
abies;150;27;NA;TRUE;26;28;NA;TRUE
abies;151;29;NA;TRUE;28;29;NA;FALSE
abies;152;13;NA;TRUE;14;16;NA;TRUE
betula;153;37;NA;TRUE;36;36;NA;FALSE
abies;154;18;NA;TRUE;18;21;NA;TRUE
abies;155;23;23;TRUE;22;24;NA;TRUE
pinsib;156;16;NA;TRUE;16;18;20;TRUE
pinsib;157;8;NA;TRUE;8;11;NA;TRUE
pinsib;158;34;23;TRUE;36;40;NA;TRUE
abies;159;26;NA;TRUE;26;27;23;TRUE
abies;160;23;NA;TRUE;24;25;27;TRUE
abies;161;16;NA;TRUE;18;20;22;TRUE
abies;162;13;NA;TRUE;14;NA;NA;TRUE
abies;163;20;NA;TRUE;22;24;NA;TRUE
abies;164;16;NA;TRUE;16;19;NA;TRUE
picea;165;36;NA;TRUE;36;36;NA;FALSE
picea;166;28;NA;TRUE;28;28;NA;FALSE
abies;167;21;NA;TRUE;22;24;22;TRUE
larix;168;52;NA;TRUE;54;54;37;TRUE
larix;169;66;NA;TRUE;66;70;NA;TRUE
picea;170;29;NA;TRUE;30;33;25;TRUE
picea;171;33;NA;TRUE;34;35;NA;TRUE
larix;172;27;NA;TRUE;26;29;33;TRUE
larix;173;31;29;TRUE;32;33;32;TRUE
abies;174;18;NA;FALSE;18;NA;NA;TRUE
betula;175;24;NA;TRUE;24;24;NA;FALSE
abies;176;10;NA;TRUE;10;10;NA;TRUE
abies;177;18;NA;TRUE;16;21;NA;TRUE
pinsib;178;48;NA;TRUE;48;48;NA;TRUE
picea;179;15;NA;TRUE;16;17;NA;TRUE
abies;180;12;NA;TRUE;12;15;19;TRUE
abies;181;19;NA;TRUE;18;NA;NA;TRUE
abies;182;11;NA;TRUE;12;14;NA;TRUE
abies;183;12;NA;TRUE;14;15;NA;TRUE
picea;184;52;NA;TRUE;52;54;NA;FALSE
pinsib;185;8;NA;TRUE;8;8;NA;TRUE
abies;186;11;NA;TRUE;12;13;NA;TRUE
abies;187;18;NA;TRUE;18;21;NA;TRUE
betula;188;19;NA;TRUE;20;22;NA;TRUE
abies;189;11;NA;TRUE;10;12;NA;TRUE
abies;190;12;NA;TRUE;12;13;NA;TRUE
abies;191;9;NA;TRUE;8;8;NA;FALSE
abies;192;21;NA;TRUE;22;22;NA;TRUE
pinsib;193;43;NA;TRUE;44;44;28;TRUE
abies;194;8;NA;TRUE;8;10;NA;TRUE
picea;195;23;NA;TRUE;24;24;23;TRUE
abies;196;9;NA;TRUE;8;9;NA;TRUE
abies;197;9;NA;TRUE;10;10;12;TRUE
abies;198;8;NA;TRUE;8;8;NA;TRUE
abies;199;19;NA;TRUE;18;20;NA;TRUE
abies;200;9;NA;TRUE;8;9;NA;TRUE
abies;201;7;NA;TRUE;6;NA;NA;TRUE
pinsib;202;48;NA;TRUE;48;48;NA;FALSE
abies;203;10;NA;TRUE;10;11;NA;TRUE
abies;204;9;NA;TRUE;8;9;NA;TRUE
abies;205;21;NA;TRUE;22;23;24;TRUE
abies;206;7;NA;TRUE;8;8;12;TRUE
abies;207;12;NA;TRUE;14;14;11;FALSE
picea;208;8;NA;FALSE;8;NA;NA;TRUE
abies;209;11;NA;TRUE;10;12;NA;TRUE
abies;210;16;NA;TRUE;16;16;20;TRUE
pinsib;211;32;NA;TRUE;34;36;NA;TRUE
pinsib;212;15;NA;TRUE;14;14;NA;TRUE
abies;213;17;NA;TRUE;18;20;NA;TRUE
pinsib;214;27;23;TRUE;26;29;NA;TRUE
pinsib;215;22;20;TRUE;22;24;28;TRUE
picea;216;45;NA;TRUE;46;44;NA;TRUE
abies;217;10;NA;TRUE;10;12;NA;TRUE
abies;218;21;NA;TRUE;22;23;NA;TRUE
abies;219;9;NA;TRUE;10;10;NA;TRUE
pinsib;220;14;NA;TRUE;14;14;NA;FALSE
abies;221;9;NA;TRUE;10;NA;NA;TRUE
abies;222;15;NA;TRUE;16;NA;NA;TRUE
picea;223;26;NA;FALSE;26;NA;NA;TRUE
abies;224;19;NA;TRUE;20;23;NA;TRUE
larix;225;40;29;TRUE;42;44;NA;TRUE
abies;226;13;NA;TRUE;14;18;NA;TRUE
picea;227;44;30;TRUE;46;46;NA;TRUE
abies;228;17;NA;TRUE;18;18;NA;TRUE
abies;229;14;NA;TRUE;14;14;NA;TRUE
abies;230;22;NA;TRUE;22;NA;NA;TRUE
abies;231;14;NA;TRUE;14;15;18;TRUE
abies;232;20;NA;TRUE;20;20;21;TRUE
abies;233;25;NA;TRUE;26;27;22;TRUE
larix;234;54;NA;TRUE;54;56;34;TRUE
betula;235;21;NA;TRUE;20;21;22;TRUE
pinsib;236;17;NA;TRUE;18;21;NA;TRUE
picea;237;23;NA;TRUE;24;26;NA;TRUE
larix;238;47;NA;TRUE;50;50;NA;TRUE
larix;239;15;NA;TRUE;16;17;NA;TRUE
larix;240;37;NA;TRUE;38;38;NA;TRUE
picea;241;11;NA;TRUE;12;12;NA;TRUE
picea;242;11;NA;TRUE;12;13;NA;TRUE
picea;243;25;NA;TRUE;26;28;NA;TRUE
picea;244;14;NA;TRUE;16;16;NA;TRUE
picea;245;16;NA;TRUE;16;19;NA;TRUE
picea;246;13;NA;TRUE;12;13;NA;TRUE
betula;247;25;NA;TRUE;24;27;NA;TRUE
abies;248;20;NA;TRUE;20;23;NA;TRUE
larix;249;45;29;TRUE;44;45;NA;TRUE
larix;250;42;30;TRUE;42;43;NA;TRUE
abies;251;21;NA;TRUE;20;22;NA;TRUE
pinsib;252;33;NA;TRUE;34;38;NA;TRUE
betula;253;21;NA;TRUE;20;20;NA;FALSE
betula;254;22;NA;TRUE;22;25;NA;TRUE
betula;255;23;NA;TRUE;22;19;NA;FALSE
betula;256;11;NA;TRUE;10;11;NA;TRUE
betula;257;21;NA;TRUE;18;NA;NA;TRUE
pinsib;258;8;NA;FALSE;8;8;NA;FALSE
picea;259;23;NA;TRUE;24;25;NA;TRUE
betula;260;22;NA;TRUE;22;23;NA;TRUE
picea;261;25;NA;TRUE;26;27;NA;TRUE
picea;262;15;NA;TRUE;14;14;NA;FALSE
abies;263;10;NA;TRUE;10;12;NA;TRUE
picea;264;19;NA;TRUE;18;20;NA;TRUE
picea;265;21;NA;TRUE;22;24;NA;TRUE
picea;266;15;NA;TRUE;16;16;NA;TRUE
larix;267;49;NA;TRUE;50;52;NA;TRUE
picea;268;8;NA;TRUE;8;8;NA;TRUE
picea;269;23;NA;TRUE;24;24;NA;TRUE
picea;270;11;NA;TRUE;10;12;NA;TRUE
abies;271;28;NA;TRUE;28;28;NA;FALSE
abies;272;16;NA;TRUE;16;18;NA;TRUE
pinsib;273;52;NA;TRUE;34;54;NA;TRUE
picea;274;39;NA;TRUE;38;40;NA;TRUE
picea;275;30;NA;TRUE;30;30;NA;TRUE
abies;276;11;NA;TRUE;12;12;NA;TRUE
picea;277;27;NA;TRUE;26;28;NA;TRUE
picea;278;NA;NA;TRUE;24;25;NA;TRUE
pinsib;279;23;NA;TRUE;30;32;NA;TRUE
larix;280;29;NA;TRUE;42;43;NA;TRUE
pinsib;281;40;24;TRUE;44;45;NA;TRUE
pinsib;282;43;15;TRUE;14;16;NA;TRUE
pinsib;283;15;NA;TRUE;52;52;NA;FALSE
pinsib;284;50;NA;TRUE;60;57;NA;FALSE
pinsib;285;59;NA;TRUE;34;33;NA;FALSE
abies;286;36;NA;FALSE;16;NA;NA;TRUE
abies;287;16;21;TRUE;20;22;NA;TRUE
abies;288;20;NA;TRUE;12;13;NA;TRUE
picea;289;12;29;TRUE;44;42;NA;TRUE
pinsib;290;42;NA;TRUE;26;29;NA;TRUE
pinsib;291;26;NA;TRUE;18;17;NA;TRUE
abies;292;16;NA;TRUE;10;12;NA;TRUE
pinsib;293;10;NA;TRUE;10;10;NA;TRUE
picea;294;11;NA;TRUE;42;42;NA;TRUE
abies;295;41;NA;TRUE;12;NA;NA;TRUE
abies;296;12;24;TRUE;NA;NA;NA;TRUE
abies;297;23;NA;TRUE;14;16;NA;TRUE
abies;298;13;NA;TRUE;12;15;NA;TRUE
abies;299;12;21;TRUE;24;24;NA;TRUE
pinsib;300;23;NA;TRUE;42;40;NA;TRUE
abies;301;41;NA;TRUE;16;12;NA;TRUE
abies;302;11;NA;TRUE;16;16;NA;TRUE
abies;303;15;NA;TRUE;16;16;NA;TRUE
abies;304;15;NA;FALSE;10;NA;NA;TRUE
abies;305;11;NA;TRUE;18;19;NA;TRUE
abies;306;18;NA;TRUE;18;20;NA;TRUE
abies;307;17;NA;FALSE;8;NA;NA;TRUE
betula;308;NA;NA;TRUE;20;22;NA;TRUE
abies;267А;20;NA;FALSE;NA;16;NA;TRUE
larix;267Б;NA;NA;FALSE;NA;46;NA;TRUE
picea;б/н;NA;NA;TRUE;NA;10;NA;TRUE
none;б/н;NA;NA;TRUE;NA;9;7;TRUE
picea;б/н;NA;NA;TRUE;NA;6;NA;TRUE

В таком виде собранные данные пригодны для обработки хоть вручную, хоть в Экселе, SPSS или любом отличном от брэйнфака языке. Мы воспользуемся R.

Подключение пакетов и загрузка данных

#Устанавливаем необходимые пакеты
install.packages("moments") #Коэффициенты эксцесса и асимметрии
install.packages("nortest") #Тесты на нормальность
#===================================================================
#Подключаем необходимые библиотеки
library(moments)
library(nortest)
#===================================================================
#Загружаем данные
alldata <- read.table(file="alldata", header=TRUE, sep=";")
spec <- split(alldata,alldata$ele)
#===================================================================

Перед тем, как вникать в статистику, посмотрим на размеры выборки. При первом перечете описано 307 деревьев (на самом деле 308, но у елки №278 не указан диаметр, поэтому будем считать ее незафиксированной). При последующих перечетах добавилось еще шесть новых деревьев (включая ель №278). Рассчитаем, как распределяются 313 деревьев по породам с учетом количества усохших и выпавших деревьев:

Пример количественной оценки пихт

abies.all <- spec$abies
length(abies.all$ele) #Всего записей, которые относятся к пихтам (127)
sum(!is.na(abies.all$d02)) #Количество пихт в перечете 2002 года (127)
sum(!is.na(abies.all$d08)) #Количество пихт в перечете 2008 года (123)
sum(!is.na(abies.all$d18)) #Количество пихт в перечете 2018 года (110)
#===================================================================
# Подсчитываем количество пихт в 2002 году
abies.all.live02 <- split(abies.all,abies.all$l02)
length(abies.all.live02$'FALSE'$ele)# Количество измеренных мертвых (FALSE) пихт в 2002 году (8)
length(abies.all.live02$'TRUE'$ele)# Количество измеренных живых (TRUE) пихт в 2002 году (119)
#===================================================================
# Подсчитываем количество пихт в 2018 году
abies.all.live18 <- split(abies.all,abies.all$l18)
length(abies.all.live18$'FALSE'$ele) # Количество измеренных мертвых (FALSE) пихт в 2018 году (7)
sum(!is.na(abies.all.live18$'TRUE'$d18))# Количество измеренных живых (TRUE) пихт в 2018 году (103)
#===================================================================

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

Количество учтенных деревьев (размеры выборок)

Порода2002 год2008 год2018 годСохранность,%
Ель (picea)82-6=768379-36=4356.6
Береза (betula)21-0=212220-6=1466.7
Кедр (pinsib)40-2=384040-11=2976.3
Пихта (abies)127-8=119123110-7=10386.6
Лиственница (larix)34-2=323435-2=33103.1
Неопределенная порода (none)3-2=133-1=2200


За шестнадцать лет в насаждении активно выпадает елка, кедр и береза (тут нельзя забывать об эффекте низкой базы, см. 200% сохранности неопределенных пород). Любой нормальный лесовод на этом бы завершил свои изыскания, но мы продолжим наши статистические фрикции.

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

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

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

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

Пример расчета ассиметрии и эксцесса

skewness(abies.all$d02, na.rm = TRUE) # Ассиметрия распределения диаметров пихт в 2002 году (1.144345)
kurtosis(abies.all$d02, na.rm = TRUE) # Эксцесс распределения диаметров пихт в 2002 году (5.02645)
#===================================================================

В числителе указана ассиметрия, в знаменателе эксцесс. Значения коэффициентов, рассчитанные для всех деревьев породы (живые и сухие) указаны вне скобок. В скобках даны значения коэффициентов только для живых деревьев породы.

Порода2002 год

асс/экс

2008 год

асс/экс

2018 год

асс/экс

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

на нормальность

Ель (picea)0.418 (0.398)/2.298 (2.173)0.311/2.2060.173 (0.436)/2.237 (2.451)Критерий Шапиро-Уилка, Критерий Дэвида-Хартли-Пирсона, Критерий Андерсона-Дарлинга
Береза (betula)0.296 (0.296)/3.263 (3.263)0.240/3.1940.078 (-0.494)/3.032 (2.958)Критерий Дарбина, Критерий Шапиро-Уилка, Критерий хи-квадрат
Кедр (pinsib)0.139 (0.083)/1.964 (1.961)0.245/2.1170.106 (0.250)/1.869 (1.937)Критерий Филлибена, Критерий Шапиро-Уилка, Критерий Мартинса-Иглевича
Пихта (abies)1.144 (1.103)/5.026 (4.985)0.329/2.3160.190 (0.154)/2.079 (2.019)Критерий Шапиро-Уилка, Критерий Дэвида-Хартли-Пирсона, Критерий Андерсона-Дарлинга
Лиственница (larix)-0.43 (-0.475)/2.189 (2.347)-0.419/2.325-0.58 (-0.53)/2.610 (2.684)Критерий Шапиро-Уилка, Критерий Дэвида-Хартли-Пирсона, Критерий Андерсона-Дарлинга


В качестве наиболее универсальных критериев нормальности наших данных используем критерии Шапиро-Уилка и Андерсона-Дарлинга. Можно было бы ограничиться лишь Шапиро-Уилка, но этот тест плохо работает на больших выборках. Действующий ГОСТ Р ИСО 5479-2002 не рассматривает применение критерия Шапиро-Уилка для выборок свыше пятидесяти наблюдений, что создает препятствия для оценки нормальности распределения диаметров елок и пихт.

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

Построение графиков плотности распределения

sm.density(picea.all.live02$'TRUE'$d02, model = "Normal", xlab="Диаметр ствола ели, см", ylab="Плотность распределения")
dev.print(png, filename="RGraph.png", width=7, height=7, pointsize=12, units="in", res=200)
#===================================================================


Самые интересные процессы наблюдаются у пихты. В 2002 году в древостое преобладали деревья диаметром 10-25 см с ассиметричным распределением. Спустя шестнадцать лет ассиметрия уменьшилась в семь раз. В настоящее время элемент леса дифференцируется на две группы: деревья с преобладающим диаметром 10-15 см и деревья диаметром 20-25 см. Предпосылки к бимодальному распределению наблюдались еще в перечете 2002 года (еще раз указываю на странность тех данных), однако лишь в перечете 2018 года бимодальность проявляется явно. Это может быть связано с изреживанием элемента: часть пихт (левый пик распределения) достигла предельных возможностей развития. Эти деревья угнетаются, замедляются в росте и постепенно будут выпадать. Напротив, правая часть распределения представлена наиболее перспективными и жизнеспособными особями. Со временем это должно привести к разделению пихты на два элемента леса: угнетенные деревья 4-го и 5-го класса Крафта и нормально распределенный второй ярус древостоя.

В еловом элементе за время наблюдений выпала большая часть деревьев диаметром 30-40 см и значительная часть тонких деревьев менее 20 см. Это привело к увеличению преобладающего диаметра (мода распределения) примерно на пять сантиметров. В отличие от пихты, ель не проявляет бимодального распределения, что вероятнее всего свидетельствует о неспособности занимать в данных условиях доминирующее положение. Текущая динамика позволяет предположить, что меньшая часть деревьев из правой части распределения сохранит свое положение во втором ярусе, в то время как основная часть перейдет в низкие классы Крафта. В конечном итоге, ель будет представлять собой разнородную примесь в разных ярусах

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

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

Распределения еловых, кедровых и, частично пихтовых стволов прямо не соответствуют кривой Шарлье, однако имеют сходство с распределением в насаждениях, где длительное время производят выборочные рубки, направленные на уборку отстающих в росте деревьев (Н.П. Анучин, 1982). В отличии от них, у лиственницы распределение с изначально отрицательной ассиметрий за время наблюдений еще больше сместилось в правую область. Равномерное снижение количества деревьев при уменьшении диаметра сменилось небольшим прогибом в диапазоне 20-40 см, что компенсировало выпадение деревьев толще 60 см.

При проверке распределения диаметров на нормальность воспользуемся p-значением 0.01. Классическое p=0.05, несмотря на его популярность не выдерживает критики, особенно в биологических исследованиях, где выборки представлены небольшим числом наблюдений (да, истинная причина в обосновании дальнейших параметрических методов, но я согласен с теми, кто даже 99% точность считает недопустимо низкой).

Проверка на нормальность диаметров живых пихт в 2002 году

shapiro.test(abies.all.live02$'TRUE'$d02) # тест Шапиро-Уилка
ad.test(abies.all.live02$'TRUE'$d02) # тест Андерсона-Дарлинга

В таблице указаны результаты теста Шапиро-Уилка (W) и Андерсона-Дарлинга (A) с вероятностями принятия нуль-гипотезы. В скобках указаны результаты тестов для живых деревьев, в остальных случаях для всех учтенных на пробе деревьев определенной породы.

Порода2002 год2008 год2018 год
Ель (picea)W = 0.963, p-value = 0.018 (W = 0.959, p-value = 0.015);A = 0.801, p-value = 0.036 (A = 0.867, p-value = 0.025);W = 0.963, p-value = 0.018;A = 0.903, p-value = 0.020;W = 0.980, p-value = 0.239 (W = 0.952, p-value = 0.071);A = 0.494, p-value = 0.210 (A = 0.630, p-value = 0.094);
Береза (betula)W = 0.980, p-value = 0.925 (W = 0.980, p-value = 0.925);A = 0.218, p-value = 0.815 (A = 0.218, p-value = 0.815);W = 0.969, p-value = 0.681;
A = 0.381, p-value = 0.370;
W = 0.980, p-value = 0.936 (W = 0.958, p-value = 0.686);A = 0.249, p-value = 0.712 (A = 0.266, p-value = 0.633);
Кедр (pinsib)W = 0.961, p-value = 0.186 (W = 0.964, p-value = 0.263);A = 0.480, p-value = 0.222 (A = 0.440, p-value = 0.278);W = 0.963, p-value = 0.207;
A = 0.461, p-value = 0.247;
W = 0.960, p-value = 0.161 (W = 0.957, p-value = 0.274);A = 0.488, p-value = 0.211 (A = 0.420, p-value = 0.305);
Пихта (abies)W = 0.922, p-value = 1.653e-06 (W = 0.923, p-value = 3.764e-06);A = 0.801, p-value = 0.036 (A = 1.679, p-value = 0.0002);W = 0.962, p-value = 0.001;
A = 0.903, p-value = 0.020;
W = 0.966, p-value = 0.007 (W = 0.965, p-value = 0.007);A = 0.494, p-value = 0.210 (A = 1.117, p-value = 0.006);
Лиственница (larix)W = 0.956, p-value = 0.184 (W = 0.959, p-value = 0.236);A = 0.476, p-value = 0.224 (A = 0.437, p-value = 0.280);W = 0.958, p-value = 0.207;
A = 0.488, p-value = 0.209;
W = 0.950, p-value = 0.111 (W = 0.961, p-value = 0.281);A = 0.544, p-value = 0.151 (A = 0.387, p-value = 0.369);


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

Сложнее обстоит дело с пихтами. В 2002 году их распределение существенно отличалось от нормального по тесту Шапиро-Уилка и соответствовало нормальному по тесту Андерсона-Дарлинга. Данная выборка превышает сотню наблюдений, поэтому тест Шапиро-Уилка мы можем проигнорировать, но даже в этом случае нормальность распределения наблюдается лишь для всей совокупности деревьев (живых и мертвых). При наблюдениях 2008 и 2018 года нормальность всей совокупности подтверждается обоими тестами, причем, как в случае с елями, вероятность случайного распределения существенно возрастает к настоящему времени. При этом выборка измеренных диаметров живых деревьев остается далекой от нормального распределения.

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

Таблицы описательных статистик распределения диаметров

Вычисление описательных статистик

mean(abies.all.live02$'TRUE'$d02, na.rm = TRUE) # Арифметическая средняя
median(abies.all.live02$'TRUE'$d02, na.rm = TRUE) # Медиана
sd(abies.all.live02$'TRUE'$d02, na.rm = TRUE)# Стандартное отклонение
var(abies.all.live02$'TRUE'$d02, na.rm = TRUE) # Дисперсия
min(abies.all.live02$'TRUE'$d02, na.rm = TRUE) # Минимальное значение
max(abies.all.live02$'TRUE'$d02, na.rm = TRUE) # Максимальное значение
sd(abies.all.live02$'TRUE'$d02, na.rm = TRUE)/sqrt(sum(!is.na(abies.all.live02$'TRUE'$d02))) # Стандартная ошибка
IQR(abies.all.live02$'TRUE'$d02, na.rm = TRUE) # Интерквартильный
размах

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

Характеристика выбоки2002 г.2008 г.2018 г.
Арифметическая средняя26.000 (26.303)26.81927.519 (23.512)
Стандартная ошибка1.257 (1.332)1.2411.254 (1.604)
Медиана24.0 (24.5)24.027.0 (24.0)
Стандартное отклонение11.384 (11.608)11.30511.148 (10.518)
Дисперсия129.605 (134.747)127.808124.279 (110.637)
Минимальное значение8 (8)86 (6)
Максимальное значение52 (52)5254 (46)
Интерквартильный размах18.0 (18.5)18.017.0 (12.0)


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

Характеристика выбоки2002 г.2008 г.2018 г.
Арифметическая средняя47.353 (48.121)48.35348.371 (49.030)
Стандартная ошибка1.648 (2.517)1.6311.594 (2.361)
Медиана50.5 (52.0)52.050.0 (50.0)
Стандартное отклонение14.926 (14.458)14.85714.167 (13.566)
Дисперсия222.781 (209.047)220.720200.711 (184.030)
Минимальное значение15 (15)1617 (17)
Максимальное значение70 (70)7270 (70)
Интерквартильный размах22.25 (20.0)21.016.5 (16.0)


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

Характеристика выбоки2002 г.2008 г.2018 г.
Арифметическая средняя28.750 (29.474)27.95029.375 (27.897)
Стандартная ошибка2.255 (2.300)2.2182.272 (2.399)
Медиана27.5 (30.0)26.029.0 (29.0)
Стандартное отклонение14.264 (14.180)14.02914.368 (12.921)
Дисперсия203.474 (201.067)196.818206.446 (166.953)
Минимальное значение6 (6)66 (8)
Максимальное значение59 (59)6057 (54)
Интерквартильный размах24.75 (25.25)24.523.25 (21.0)


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

Характеристика выбоки2002 г.2008 г.2018 г.
Арифметическая средняя22.476 (22.476)22.022.9 (23.0)
Стандартная ошибка1.310 (1.310)1.2761.339 (1.456)
Медиана22.0 (22.0)22.022.5 (22.5)
Стандартное отклонение6.005 (6.005)5.9845.990 (5.449)
Дисперсия36.062 (36.062)35.81035.884 (29.692)
Минимальное значение11 (11)1011 (11)
Максимальное значение37 (37)3636 (31)
Интерквартильный размах7.0 (7.00)5.55.75 (5.25)


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

Характеристика выбоки2002 г.2008 г.2018 г.
Арифметическая средняя16.70116.08117.745
Стандартная ошибка0.5700.4770.521
Медиана16 (16)1617 (17)
Стандартное отклонение6.4255.2945.461
Дисперсия41.27528.02629.825
Минимальное значение7 (7)68 (8)
Максимальное значение41 (41)2829 (28)
Интерквартильный размах8 (8)89 (9)


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

Распределение диаметров пород выравнивается (подтверждается снижением интерквартильного размаха и дисперсии на 10-30 процентов) вокруг средних значений. Максимальные значения диаметров снижаются, минимальные возрастают. Одновременное выпадение наиболее крупных и мелких деревьев свидетельствует об увеличении однородности насаждения и его несформированности. Однако, окончательный вывод о динамике развития древостоя по существующим данным делать недопустимо.

Еще меньшей информативностью обладают данные по высотам. Измерение высот — чрезвычайно трудоемкий процесс с большой вероятностью субъективных ошибок. Над его улучшением трудились Ленхорд, Ланг, Лайер, Таката, Видеманн, Филипп, Гогенадль, Вейзе, Кренн, Лорей, Митерлих, Жан Парде, Продан и другие выдающиеся исследователи, но результат высотных замеров как был, так и остается хуетой в подавляющем большинстве исследований. Это связано со сложностью распознавания вершины дерева (и самим понятием «вершины»), микрорельефом, трудностью выставления точного базисного расстояния, несоответствием отбираемых деревьев распределению по диаметру и ряду других причин.

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

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

Таблицы описательных статистик распределения высот

Статистики распределения значений высоты у кедра

Характеристика выборки2002 г.2018 г.
Тест Шапиро-УилкаW = 0.905, p-value = 0.281W = 0.849, p-value = 0.224
Среднее21.923.0
Стандартная ошибка1.0733
Медиана2324

Статистики распределения значений высоты у лиственницы

Характеристика выборки2002 г.2018 г.
Тест Шапиро-УилкаW = 0.496, p-value = 2.073e-05W = 0.908, p-value = 0.266
Среднее29.234.6
Стандартная ошибка0.1670.748
Медиана29.034.0

Статистики распределения значений высоты у ели

Характеристика выборки2002 г.2018 г.
Тест Шапиро-УилкаW = 0.954, p-value = 0.737W = 0.942, p-value = 0.537
Среднее26.026.0
Стандартная ошибка0.8982.082
Медиана27.025.0

Статистики распределения значений высоты у пихты

Характеристика выборки2002 г.2018 г.
Тест Шапиро-УилкаW = 0.92382, p-value = 0.4248W = 0.93569, p-value = 0.1612
Среднее19.019.4
Стандартная ошибка1.2801.062
Медиана21.019.5

Статистики распределения значений высоты у березы

Характеристика выборки2002 г.2018 г.
Среднее22.0


Таким образом, за период наблюдений 2002-20018 г. на пробной площади не отмечено достоверных изменений средних диаметров, высот, а значит и запасов у элементов леса. Запас продолжает быть необычайно высоким: принимая значение видовых чисел за 0.5, он составляет 452.5 кубометра живой древесины на гектар (лиственница — 270 куб.м, ель — 60 куб.м, кедр — 50 куб.м, пихта — 57.5 куб.м, береза — 15 куб.м). Это значение почти идентично запасу, рассчитанному в 2002 году (466 куб.м), хотя замечу, что в статье З.Я. и В.З. Нагимовых сумма запасов у пород (504 куб.м в таблице и 524 куб. м в тексте статьи) превышает запас на пробной площади: существенно разнятся по запасам ель (в статье 148 куб. м) и береза (в статье 15 куб. м). Запас, определенный в 2008 году идентичен текущему запасу.

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

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

Уличная картография

Уличная картография

«Он нам и нахуй не нужон, интернет ваш»
Из интернета

Я человек простой, урбанистов от пидарасов не отличаю, поэтому буду говорить прямо. Тайлы, которые отдают картографические сервисы — это не карты, а говно. То, что картографы занимаются вопросами навигации — это недоразумение, которое исчезнет вместе с пейджерами и CD-дисками. Мы напрочь забыли смысл навигации — если рядом навигатор (в смысле человека, а не пластиковой хуеты), то тебе не нужно смотреть карту. Я жду если не дронов, которые будут вести тебя к нужному адресу, то хотя-бы простого приложения без всяких карт, которому можно сказать: «Пивная «У братьев» и он расскажет на каком перекрестке куда свернуть. В мобильных навигационных приложениях карты нахуй не нужны.

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

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

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

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

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

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

Петербургу особенно не везет с OpenStreetMap. C завидной периодичностью появляются карты на основе данных проекта и каждый раз они выглядят чудовищно:
OpenStreetMap в Питере

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

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

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

Другой постоянной проблемой уличных карт является пренебрежение антропометрическими принципами. Вот, в том же Ростове создали карты для размещения на остановках. Мягко говоря не идеальные — видно что с геоданными никто не заморачивался — просто отобразили атрибутику как есть. В результате подпись улицы Седова появляется дважды друг за другом. Подпись реки сделана горизонтальной, что режет глаз, почти вся текстовая информация представляет собой подписи улиц — ни названия районов, ни придонских портовых зон. Текст сделан с избыточным буфером, слово «Проспект» зачем-то выведено целиком.

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

Поставить человека раком — одно из любимых занятий в картографии. Вот питерская сеть велопроката — текст на билбордах начинается где-то на уровне коленки. Да и сама карта сделана наотъебись — как и в Ростове, авторы проигнорировали обработку геоданных. В результате река подписана в четырех местах, причем в двух как «р. Нева», а в двух как «р. Большая Нева».
Карта велопроката в Петербурге

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

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

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

Если не брать Швейцарию, где плохая картографическая работа абсолютное религиозное табу, европейцы относятся к уличным картам гораздо прагматичнее нас. Советская картографическая школа выдрачивала скрупулезных педантов, в результате большинство карт напоминают третий концерт Рахманинова — произведение невероятной сложности, хотя слушать эту поебень невыносимо. Уличная навигация должна быть такой, что-бы в случае вторжения войск НАТО ты мог сорвать карту с любой остановки и корректировать по ней артиллерийский огонь. Даже если вы не можете позволить себе качественную полиграфию и на одном квадратном метре нужно изобразить пол-Москвы, все-равно, не нарисовать домики — это как Родину предать.

А вот в Лапееранте не заморачиваются. Нужна карта общественного транспорта — пожалуйста:
Карты в Лапееранте

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

Они там в своих Европах полностью ушли в разврат и грехопадение. Контуры домиков не рисуют, но нумерация строений проставлена. Вот еще пример из Йоэнсуу (обратите внимание на размещение текстовки на билборде):
Карты в Йоэнсуу

Или еще пример оттуда-же:
Карты в Йоэнсуу

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

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

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

Мужик на лавке

Настоящий ученый

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

Воронеж прекрасен и уютен словно советская открытка:

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

Уютные частные домишки на крутых склонах воронежского водохранилища:

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

Среди старинных церквей ютится стеснительный новодел:

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

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

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

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

Задача не сложная — снять основные биометрические показатели и отобрать материал на генетический анализ. Гораздо труднее эти площади найти. Эксперименты с географическими культурами в свое время носили если не глобальный, то во всяком случае континентальный характер. Опытные площадки заложены в Архангельской, Ленинградской, Костромской, Новгородской, Псковской, Липецкой, Воронежской, Омской, Вологодской, Свердловской областях, Красноярском крае, Карелии Татарстане и других регионах ресефесеэр, Украине, Белоруссии, Прибалтике и даже Франции с Германией. Израсходовано космическое бабло, убиты года чистого времени, исписаны кубометры бланков наблюдений. Но хоть конем ебись, а не найдешь даже самой поганенькой карты размещения площадок. За четверть века все кто был в теме ушли в бизнес, умерли или спились. Архивы закинули в дальний угол, а некоторые выкинули. Часть опытных площадок уже наверняка вырублена, часть сгорела. На тех, что остались почти не разобрать границ, поэтому наблюдения ведутся так: низкие елки — значит саженцы были из Карпат. А тут высокие пошли — это Архангельские. А тут тоже высокие — хуй знает откуда — напишем, что из Вологды.

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

Воронежская лесотехническая академия

потом в парке, пивной и местном аналоге НИИ лесного хозяйства. Главное не отчаиваться и сохранять позитив. Немного настойчивости и вот она — удача. Найден дедушка, который со времен посадок географических культур впал в милую деменцию. Далее дело техники — находим водителя на «козле», садим дедушку на штурманское место и мчим сквозь поля:

Пересекаем Дон:
Воронежская лесотехническая академия

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

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

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

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

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

Невротическая прокрастинация мышки

Невротическая прокрастинация мышки

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

С каждым восходом листва все сильней покрывается ксантофилл-каротиновыми пятнами
каротин-ксантофилл

Но днем еще достаточно тепло для ос, поедающих последние груши
оса на груше

разных пластинчатоусых
Пластинчатоусые

и расплодившихся соек Garrulus glandarius, которые, несмотря на обильность, совершенно не дают шанса себя сфотографировать:
Тут была сойка

Чудесное время. Все пытаются урвать последнее тепло и наесть жирка перед зимовкой. Я сам такой, поэтому зла на заполонивших мой дом мышей Mus musculus совершенно не держу. Для тех кто наглее стоят мышеловки, остальных я подкармливаю гречкой. Не то, что-бы специально, но раз уж они прогрызли пакет, грех этим не воспользоваться. Ставишь крупу посередине комнаты и садишься писать очередной рассказ. Слышишь — шлепки за спиной. А это мышь прыгает на пакет, пытаясь проникнуть к лакомству. С пятой-шестой попытки запрыгивает, пролезает в отверстие и начинает уминать гречку.

Тут-то и начинается интересное.

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

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

то пытается зарыться с головой в гречку:
Мышка прячется

то притворяется мертвой — лежит неподвижно четверть минуты:
мышка притворяется

потом вскакивает и пытается выбраться — расцарапать или прогрызть пакет:
Мышка выбирается

Зубы у нее острые, да и когти вполне себе:
мышиная лапа

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

В конце концов, это мне надоедает и я отжимаю прищепку.

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

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

Через час-другой попадается новая жертва и цирк повторяется по старому сценарию.

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

Контурная карта растительности

Создание крупномасштабной контурной карты растительности

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

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

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

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

Рассмотрим процесс создания генерализованной контурной карты растительности 13-14 зумов (1:25 000 — 1:50 000) долин рек Сарм-Сабун (иногда встречается написание Сармсабун) и Глубокий Сабун Ханты-Мансийского автономного округа. Сливаясь эти реки образуют правый приток Ваха — реку Сабун:
Слияние Сарм-Сабуна и Глубокого Сабуна

Логично начать картографическую работу с инвентаризации доступных данных. Для каждого региона этот список может быть разный, но стандартно в него входят Ландсаты разных поколений с их производными. Часто к ним примыкают цифровые модели местности, но в моем случае использовать их почти лишено смыла: SRTM до этих широт не доходит, ASTER Alos представлен только фрагментарно, а классический астер напичкан артефактами. Кроме того, DTM-фильтр при создании карт растительности таежных равнин работает плохо. Всевозможные модисы и сентинели меня не устраивали по разным причинам (качество, покрытие, получение, алгоритмы обработки и сравнения и др.). Об использовании карт OSM и генштаба не может быть и речи. У первых в этом месте вакуум, а вторые мало того, что устарели, так еще и неизвестно откуда взяты. Украденные карты государственной топографии хороши для навигации на месте (особенно это касается карт ГГЦ), но использование таких материалов в своих проектах — абсолютный признак профнепригодности. Лучше всего это иллюстрирует конференция «Опыт использования карт Генерального Штаба», проводимая обществом безруких картографов Саудовской Аравии. Данные тематического картографирования, равно как и данные AVHRR в список исходных материалов так же не попали, по причине того, что их использование более оправдано для анализа растительности и финального уточнению карты, чем для первоначального выделения границ растительности.

В итоге для создания первичного контура выбраны сцены Landsat-8 за 15 июля и 12 мая 2018 года и растр сомкнутости древостоя («Treecover») проекта Global Forest Change. Кроме того, растр водной поверхности GFC использован для быстрого создания слоя водоемов. Дополнительные ландсаты (Landsat-ETM за 30 июля 2000 года, Landsat-MSS за 30 июня 1983 года и Landsat-MSS за 04 мая 1983 года) в создании контурной карты не использованы, но по ним производится расчет зональной статистики для последующего дешифрирования и уточнения границ растительных сообществ.

Уже из списка источников видно, что для создания контурной карты я применяю фенологический подход, который заключается в том, что вы создаете контуры не на основе одного растра, а на основе композита, образованного слиянием зимних и летних снимков. «Зимний» снимок сделан 12 мая, но учитывая позднюю снежную зиму этого года и климат региона — это нормально.

В начале из каналов летнего и зимнего снимков создадим растры вегетационного индекса. Вегетационный индекс — NDVI (Normalized Difference Vegetation Index) показывает количество фотосинтетически активной биомассы. Обычно его не рекомендуют применять для снимков зимнего периода, но для нашей задачи требуется именно это. Расчет ведется с помощью растрового калькулятора QGis по формуле:

NDVI = (NIR-RED)/(NIR+RED),

где NIR и RED — инфракрасный и красный каналы каждого снимка соответственно.

Значения каждого индекса увеличиваются по формуле 100*(значение NDVI + 1). Прибавление единицы избавляет от отрицательных значений. Умножать в сто раз необязательно, это сделано исключительно ради субъективного удобства. Такое изменение индекса не влияет на конечный результат.

Рассчитав вегетационные индексы, логично использовать ту же формулу для оценки фенологических изменений. Поскольку общепринятого наименования у данной величины нет, назовем ее нормализированным фенологическим индексом — NDFI. Соответственно, расчет NDFI производится по формуле:

NDFI = (NDVIлето-NDVIзима)/(NDVIлето+NDVIзима):

Растр NDFI (минимальные фенологические изменения - красным)

Растр NDFI (минимальные фенологические изменения — красным)

Приступим к обработке растра сомкнутости лесной растительности GFC. Исходный слой GFC имеет пустые значения пикселей на безлесных участках. Использование такого растра приведет к разбалансировке цветов на финальном композите, поэтому требуется заполнить пустоты нулевыми значениями.

Может показаться ошибочным использование GFC совместно с ландсатами текущего года, поскольку слой «treecover» GFC актуален на 2000 год. На самом деле такое совмещение дает дополнительные возможности, поскольку при совмещении растров проявятся контуры горельников и ветровалов 2000-2018 годов.

После описанных процедур мы обладаем тремя растрами, которые будем использовать для создания композита: летние значения NDVI (количество зеленой биомассы в июле 2018 года), NDFI (величина фенологических изменений с мая по июль 2018 года) и treecover (сомкнутость леса на момент 2000 года). Сведем все это в единый RGB-композит, установив красный канал для NDFI, зеленый канал для NDVI, синий канал для treecover. Во всех каналах улучшим контраст растяжением от минимального до максимального значения. В QGis это можно сделать автоматически, поэтому нет нужды нормализовать растры к диапазону 0-255:
RGB-композит

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

Создадим линейный слой реки. Лучше всего сделать это в JOSMe по слою Bing-а, после чего экспортировать данные в QGis. К сожалению, это возможно лишь при постоянном наличии хорошего интернет-соединения. Если с таковым проблемы, то можно использовать панхроматический канал Landsat с разрешением 15 метров на пиксель (у Landsat-8 это восьмой канал). На основе осевой линии реки строим буфер, в пределах которого планируется создание контурной карты (два километра в обе стороны от оси реки):
Осевая линия реки и буфер-граница карты

Далее обрезаете композит по контуру буфера:
RGB-композит обрезанный по контуру буфера

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

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

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

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

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

Для каждого полигона рассчитывается центроид:
Центроиды полигонов векторизированного растра

После чего слой центроидов интерполируется обратно в растр:
Интерполяция центроидов векторизированного растра

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

Необходимо преобразовать изолинии в полигоны, поэтому для сохранности топологии перед началом процедуры следует провести генерализацию, убрав изолинии малой протяженности (в моем случае менее двухсот метров). Кроме того, следует определиться, какие изолинии наиболее соответствуют естественным границам растительности. Сделать это можно сверяясь с высокодетальными снимками (что, правда не совсем законно даже в случае с Bing-ом):
Изолинии на снимке Bing

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

Такой анализ требует в несколько раз больше изолиний, чем вы планируете получить типов контуров на карте. После того, как наиболее достоверные линии найдены, сохраняете их в отдельный слой и приступаете к созданию полигонов. К великому неудовольствию это тоже не сводится к элементарному действию, поскольку процедура в SAGA «Polygon-line intersect» выдает совершенно негодный результат. Приходиться преобразовывать изолинии в полигоны, после чего чередованием GDAL-овских алгоритмов разности и объединения сводить все в единый слой.

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

В конечном итоге, экспортируем все в TileMill или MapBox Studio (смотря на стоимость вашего интернета), настраиваем стиль и нарезаем карту на тайлы:
Карта в TileMill

Все. Теперь можно подключить mb-тайлы к лефлету или tms-серверу, расставить предварительные точки описаний, кешировать все в навигатор и выезжать в поле.

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




Десять ошибок картографа

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

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

1. Качество графики

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

2. Несоответствие объектов карты масштабу

Очень частая проблема, а среди тех, кто использует данные OpenStreetMap вообще почти повсеместная. Генерализация процесс трудоемкий, но необходимый, иначе вместо карты вы получаете холст в грязных пятнах. Обидно, что во многих случаях генерализация вообще не требуется — можно просто убрать объекты с карты, все равно они на ней никакой роли не играют. Для чего вам на карте тысячи озер размером с придорожную лужу если вы рисуете схему 302 железной дороги?

3. Неаккуратная работа с разрывными линиями

При разработке картографического стиля с большой вариативностью линейных объектов часто возникает желание зафигачить пунктир или штрихпунктир. Это прекрасные приемы, но они требуют обязательного соблюдения мер предосторожности. Линии с разрывами хорошо подходят только для прямых объектов. Другими словами: отображать штрихпунткиром границы американских штатов — норм. Отображать штрихпунктиром границы областей России — фу-фу-фу.

4. Невнимательная работа с цветом

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

5. Небрежность в расстановке подписей

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

6. Разрушение целостности

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

7. Нарушение общепринятых традиций оформления

Иногда можно нарушить это правило (впрочем все остальные тоже) и покрасить озеро в красный, а лес в синий цвет. Но все же без особой нужды лучше этого не делать. Современная картография более требовательна к качеству интуитивного восприятия. Читатели, изнеженные мобильными сервисами привыкли к комфорту и не приемлят сносок внизу страницы как в «Войне и Мире». Чем реже вы будете вынуждать человека обращаться к легенде, тем лучше. Идеальный случай когда легенда совсем не нужна — все понятно сразу по карте.

8. Избыточная стилизация

Здорово когда автор выбирает цветовое оформление исходя исключительно из содержания карты, но к несчастью это не всегда эффективно. Если можно сделать градиент более контрастным, то почему бы этого не сделать? Читатель скажет вам спасибо за то, что ему не придется выбирать среди оттенков оранжевого или синего. Вспомните трехцветную шкалу высот/глубин со школьной географической карты. Но следует помнить, что это замечание справедливо лишь для ситуаций в которых градиентом показан основной объект карты. Если градиент выступает в роли фона, то часто имеет смысл наоборот сделать его максимально плавным, убрав лишние границы и разгрузив карту для важной информации.

9. Прямоугольная компоновка карты

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

10. Неконтролируемый объем

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

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

Но в целом я доволен, насладился. Спасибо участникам конкурса за работы и организаторам за предоставленную возможность. С тревогой должен сообщить всем, кто стирал с кульмана лезвием чернильные кляксы. Судя по тому, что творят студенты первых курсов, если срочно не начнем учиться, через десять лет мы со своим умением придавать объем домикам в мапнике пойдем улицы подметать. Это тоже почетно, но не так интересно. Тщательнее надо.

Шкаф в музее железных дорог

Выход есть

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

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

Или из океанариума в Питере:
Океанариум

Или из планетария. Московского:
Московский планетарий

и нового питерского:
Питерский планетарий

Из питерского зоопарка:
Питерский зоопарк

и зоопарка в Москве:
Московский зоопарк

Из главного музея железнодорожного транспорта:
Паровозный музей

И шахтинского краеведческого музея:
Шахтинский краеведческий музей

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