Политический детектив

Политический детектив

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

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

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

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

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

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

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

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

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

Картографический стиль «Y»

В связи с очередным изменением дизайна Яндекс-карт, а также их решительного перехода на векторные тайлы, настало время открыть последний из уцелевших черновиков картографического стиля «Y». Этот xml-файл под мапник стилизует данные OpenStreetMap под стиль Яндекс-карт образца 2016 года.

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

Картографический код как в чудесной алисиной стране: требуется много усилий для того, что-бы он хотя-бы оставался на месте и не деградировал.

Превьюшки картостиля (в левой части картинок оригинальные Яндекс-карты, в правой картостиль «Y» на базе данных OpenStreetMap):

Фрагмент кода (первые 200 строк)
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Map[]>
<Map srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0
		+x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null
		+wktext +no_defs +over" background-color="#aacbd9" >
 
<!-- Масштабы и зумы
zoom_00 <MaxScaleDenominator>1000000000</MaxScaleDenominator>
		<MinScaleDenominator>400000000</MinScaleDenominator>
 
zoom_01 <MaxScaleDenominator>400000000</MaxScaleDenominator>
		<MinScaleDenominator>200000000</MinScaleDenominator>
zoom_02 <MaxScaleDenominator>200000000</MaxScaleDenominator>
		<MinScaleDenominator>100000000</MinScaleDenominator>
zoom_03 <MaxScaleDenominator>100000000</MaxScaleDenominator>
		<MinScaleDenominator>50000000</MinScaleDenominator>
 
zoom_04 <MaxScaleDenominator>50000000</MaxScaleDenominator>
		<MinScaleDenominator>25000000</MinScaleDenominator>
zoom_05 <MaxScaleDenominator>25000000</MaxScaleDenominator>
		<MinScaleDenominator>15000000</MinScaleDenominator>
zoom_06 <MaxScaleDenominator>15000000</MaxScaleDenominator>
		<MinScaleDenominator>7000000</MinScaleDenominator>
 
zoom_07 <MaxScaleDenominator>7000000</MaxScaleDenominator>
		<MinScaleDenominator>3500000</MinScaleDenominator>
zoom_08 <MaxScaleDenominator>3500000</MaxScaleDenominator>
		<MinScaleDenominator>1500000</MinScaleDenominator>
zoom_09 <MaxScaleDenominator>1500000</MaxScaleDenominator>
		<MinScaleDenominator>700000</MinScaleDenominator>
 
zoom_10 <MaxScaleDenominator>700000</MaxScaleDenominator>
		<MinScaleDenominator>350000</MinScaleDenominator>
zoom_11 <MaxScaleDenominator>350000</MaxScaleDenominator>
		<MinScaleDenominator>150000</MinScaleDenominator>
zoom_12 <MaxScaleDenominator>150000</MaxScaleDenominator>
		<MinScaleDenominator>70000</MinScaleDenominator>
 
zoom_13 <MaxScaleDenominator>70000</MaxScaleDenominator>
		<MinScaleDenominator>35000</MinScaleDenominator>
zoom_14 <MaxScaleDenominator>35000</MaxScaleDenominator>
		<MinScaleDenominator>20000</MinScaleDenominator>
zoom_15 <MaxScaleDenominator>20000</MaxScaleDenominator>
		<MinScaleDenominator>10000</MinScaleDenominator>
 
zoom_16 <MaxScaleDenominator>10000</MaxScaleDenominator>
		<MinScaleDenominator>5000</MinScaleDenominator>
zoom_17 <MaxScaleDenominator>5000</MaxScaleDenominator>
		<MinScaleDenominator>2500</MinScaleDenominator>
zoom_18 <MaxScaleDenominator>2500</MaxScaleDenominator>
		<MinScaleDenominator>1500</MinScaleDenominator>
 
zoom_19 <MaxScaleDenominator>1500</MaxScaleDenominator>
		<MinScaleDenominator>700</MinScaleDenominator>
zoom_20 <MaxScaleDenominator>700</MaxScaleDenominator>
		<MinScaleDenominator>350</MinScaleDenominator>
-->
 
<Parameters>
  <Parameter name="bounds">-180,-90,180,90</Parameter>
  <Parameter name="center">0,0,2</Parameter>
  <Parameter name="format">png</Parameter>
  <Parameter name="minzoom">2</Parameter>
  <Parameter name="maxzoom">19</Parameter>
  <Parameter name="name">
	  <![CDATA[Mapstyle Y for OpenStreetMap Data,
				powered by Sergey Golubev]]></Parameter>
</Parameters>
 
<FontSet name="regular">
  <Font face-name="Ubuntu Regular"/>
  <Font face-name="Arial Regular"/>
  <Font face-name="DejaVu Sans Book"/>
</FontSet>
<FontSet name="italic">
  <Font face-name="Times New Roman Italic"/>
  <Font face-name="FreeSerif Italic"/>
  <Font face-name="DejaVu Serif Italic"/>
</FontSet>
<FontSet name="bold">
  <Font face-name="Arial Bold"/>
  <Font face-name="Liberation Sans Bold"/>
  <Font face-name="DejaVu Sans Bold"/>
</FontSet>
 
<Style name="RUworld" filter-mode="first" >
<Rule>
    <MaxScaleDenominator>1000000000</MaxScaleDenominator>
	<MinScaleDenominator>700</MinScaleDenominator>
			<PolygonSymbolizer
			fill="#fffff7" />
			<LineSymbolizer
			stroke="rgba(135, 135, 135, 0.04)"
			stroke-width="10"
			stroke-linejoin="round" />
</Rule>
 
<Rule>
    <MaxScaleDenominator>1000000000</MaxScaleDenominator>
	<MinScaleDenominator>100000000</MinScaleDenominator>
		<Filter>([ISO_A2] = 'BY')</Filter>
			<LineSymbolizer
			stroke="rgba(135, 135, 135, 0.04)"
			stroke-width="2"
			stroke-linejoin="round" />
				<PolygonSymbolizer
				fill="#fff8e7" />
</Rule>
<Rule>
    <MaxScaleDenominator>100000000</MaxScaleDenominator>
	<MinScaleDenominator>50000000</MinScaleDenominator>
		<Filter>([ISO_A2] = 'BY')</Filter>
			<LineSymbolizer
			stroke="rgba(135, 135, 135, 0.04)"
			stroke-width="5"
			stroke-linejoin="round" />
				<PolygonSymbolizer
				fill="#fff8e7" />
</Rule>
<Rule>
    <MaxScaleDenominator>50000000</MaxScaleDenominator>
	<MinScaleDenominator>12500000</MinScaleDenominator>
		<Filter>([ISO_A2] = 'BY')</Filter>
			<LineSymbolizer
			stroke="rgba(135, 135, 135, 0.04)"
			stroke-width="10"
			stroke-linejoin="round" />
				<PolygonSymbolizer
				fill="#fff8e7" />
</Rule>
<Rule>
    <MaxScaleDenominator>12500000</MaxScaleDenominator>
	<MinScaleDenominator>700</MinScaleDenominator>
		<Filter>([ISO_A2] = 'BY')</Filter>
			<LineSymbolizer
			stroke="rgba(135, 135, 135, 0.04)"
			stroke-width="10"
			stroke-linejoin="round" />
				<PolygonSymbolizer
				fill="#fffff7" />
</Rule>
<Rule>
    <MaxScaleDenominator>1000000000</MaxScaleDenominator>
	<MinScaleDenominator>100000000</MinScaleDenominator>
		<Filter>([ISO_A2] = 'RU')</Filter>
			<LineSymbolizer
			stroke="rgba(135, 135, 135, 0.04)"
			stroke-width="2"
			stroke-linejoin="round" />
				<PolygonSymbolizer
				fill="#fff0f5" />
</Rule>
<Rule>
    <MaxScaleDenominator>100000000</MaxScaleDenominator>
	<MinScaleDenominator>50000000</MinScaleDenominator>
		<Filter>([ISO_A2] = 'RU')</Filter>
			<LineSymbolizer
			stroke="rgba(135, 135, 135, 0.04)"
			stroke-width="5"
			stroke-linejoin="round" />
				<PolygonSymbolizer
				fill="#fff0f5" />
</Rule>
<Rule>
    <MaxScaleDenominator>50000000</MaxScaleDenominator>
	<MinScaleDenominator>12500000</MinScaleDenominator>
		<Filter>([ISO_A2] = 'RU')</Filter>
			<LineSymbolizer
			stroke="rgba(135, 135, 135, 0.04)"
			stroke-width="10"
			stroke-linejoin="round" />
				<PolygonSymbolizer
				fill="#fff0f5" />
</Rule>
<Rule>
    <MaxScaleDenominator>12500000</MaxScaleDenominator>
	<MinScaleDenominator>700</MinScaleDenominator>
		<Filter>([ISO_A2] = 'RU')</Filter>
			<LineSymbolizer
			stroke="rgba(135, 135, 135, 0.04)"
			stroke-width="10"
			stroke-linejoin="round" />
				<PolygonSymbolizer
				fill="#fffff7" />
</Rule>
</Style>
<Style name="RUworld-outline" filter-mode="first" >
<Rule>
    <LineSymbolizer stroke="#85c5d3" stroke-width="3"
		stroke-linejoin="round" />
</Rule>
</Style>
<Layer name="RUworld"  srs="+proj=longlat +ellps=WGS84 +no_defs">
    <StyleName>RUworld-outline</StyleName>
    <StyleName>RUworld</StyleName>
    <Datasource>
       <Parameter name="file"><![CDATA[WORLD/world.shp]]></Parameter>
       <Parameter name="id"><![CDATA[RUworld]]></Parameter>
       <Parameter name="project"><![CDATA[ymapstyle]]></Parameter>
       <Parameter name="srs"><![CDATA[]]></Parameter>
       <Parameter name="type"><![CDATA[shape]]></Parameter>
    </Datasource>
  </Layer>

Закон первой маски

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

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

Так совпало, что мне надоело в очередной раз проверять степенные распределения на соответствие закону Бенфорда. Полтора века назад Саймон Ньюком изучая потертости страниц в сборниках логарифмических таблиц обнаружил любопытный феномен, который спустя шестьдесят лет обобщил Френк Бенфорд: В экспоненциальных распределениях каждое третье число начинается с единицы. Точнее, вероятность встретить единицу 30.1, двойку 17.6, тройку 12.5 и далее согласно разработанной Бенфордом формуле.

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

Ну а что-же ковид? Оказалось, что в распределениях суммарного количества заболевших наибольшие отклонения от распределения Бенфорда наблюдаются в Москве с областью и соседствующими регионами, Северном Кавказе, Татарии и Башкирии, Туве, Чукотке и Камчатке.

Распределения по количеству выздоровевших наиболее соответствуют закону Бенфорда вдоль границы с Казахстаном, юго-востоку (Приморье и Сахалин) и Северо-Западу (Карелия и Мурманская) России.

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

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

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

P.S. Спасибо всем, кто откликнулся на призыв о поиске сырых данных по заболеваемости в регионах.

Классификатор основных объектов на карте

Группа Объект
Админ. деление Государственная принадлежность
Админ. деление Границы государств
Админ. деление Спорные границы государств
Админ. деление Границы областей, штатов
Админ. деление Границы районов
Админ. деление Крупные города
Админ. деление Средние города
Админ. деление Мелкие города
Админ. деление Городские районы
Админ. деление Деревни
Админ. деление Отдельные дворы, хутора
Админ. деление Дачные и садовые участки
Админ. деление Постоянные стоянки кочевых поселений
Админ. деление Разрушенные и оставленные населенные пункты
Админ. деление Именованные места
Админ. деление Прочие границы
Админ. деление Количество жителей
Барьеры Ворота
Барьеры Шлагбаум
Барьеры Мусор
Барьеры Стена
Барьеры Блок
Барьеры Траншея
Барьеры Забор
Гидрография естественная Океаны и моря
Гидрография естественная Озера
Гидрография естественная Реки
Гидрография естественная Ручьи
Гидрография естественная Болота проходимые
Гидрография естественная Болота непроходимые
Гидрография естественная Водопады
Гидрография естественная Гейзеры
Гидрография естественная Источники необорудованные
Гидрография естественная Пороги
Гидрография естественная Котловины высохших водоемов
Гидрография естественная Мели
Гидрография естественная Области прилива
Гидрография естественная Острова
Гидрография естественная Зоны затопления, разлива
Гидрография естественная Места скопления плавника
Гидрография естественная Характер береговой линии
Гидрография естественная Рифы
Гидрография естественная Архипелаг
Гидрография искусственная Бассейны
Гидрография искусственная Водохранилища
Гидрография искусственная Дамбы
Гидрография искусственная Плотины
Гидрография искусственная Плотины подводные
Гидрография искусственная Каналы несудоходные
Гидрография искусственная Каналы судоходные
Гидрография искусственная Шлюзы
Гидрография искусственная Молы, пристани и причалы
Гидрография искусственная Доки
Гидрография искусственная Волноломы и буны
Гидрография искусственная Источники оборудованные
Гидрография искусственная Колодцы, колонки и скважины
Гидрография искусственная Каналы мелиоративные
Гидрография искусственная Водозаборы, водосборные и водораспределительные устройства
Гидрография искусственная Акведуки
Гидрография искусственная Пожарные водоемы
Гидрография искусственная Бакены, буи, сигнальные огни
Дороги автомобильные Автомагистрали
Дороги автомобильные Шоссе
Дороги автомобильные Улучшенные грунтовые дороги
Дороги автомобильные Грунтовые проселочные дороги
Дороги автомобильные Полевые и лесные дороги
Дороги автомобильные Зимники
Дороги автомобильные Улицы
Дороги автомобильные Проезды
Дороги автомобильные Подвесные дороги
Дорожная инфраструктура Автомойка
Дорожная инфраструктура Зарядная станция для электромобилей
Общественные места Продуктовые магазины
Общественные места Магазины по продаже газа
Дорожная инфраструктура Автомагазин
Дорожная инфраструктура АЗС
Дорожная инфраструктура Стоянки транспорта и отстойники
Дорожная инфраструктура СТО
Дорожная инфраструктура Место отдыха
Элементы дорог Круговое движение
Элементы дорог Знак «стоп»
Элементы дорог Светофор
Элементы дорог Платный въезд
Элементы дорог Уступи дорогу
Землепользование Деловые районы
Землепользование Места торговли
Землепользование Промышленные территории
Землепользование Сельскохозяйственные территории
Землепользование Жилая зона
Землепользование Стройки
Землепользование Кладбища без растительности
Землепользование Кладбища с растительностью
Землепользование Мусорные свалки
Землепользование Запретные зоны (армия, тюрьмы и др.)
Землепользование Религиозные территории
Землепользование Заповедники и национальные парки
Землепользование Охотничьи угодья
Землепользование Зоны с особым режимом использования территории
Землепользование Ограничения по доступу
Землепользование Места боевых действий, минные поля
Землепользование Иные опасные районы
Общественные места Религиозные строения
Общественные места Здания социально-культурного назначения
Общественные места Места развлечений
Общественные места Пункты связи (телеграф, телефон, почта)
Общественные места Специальное места для выгула и дрессировки собак
Общественные места Костровища
Общественные места Места для рыбалки
Общественные места Места аренды транспортной техники
Общественные места Банкоматы и банки
Общественные места Ветеринарные клиники
Общественные места Публичные дома, стриптиз клубы
Общественные места Места передержки животных
Общественные места Посольства
Общественные места Места сбора отходов вторичной переработки
Общественные места Сауна (баня)
Общественные места Урны для мусора
Общественные места Офис лесничества, лесного или охот. хозяйства
Общественные места Офис гидов по организации экскурсий
Общественные места Мастерская по ремонту лодок
Общественные места Кемпинги и места отдыха на природе
Общественные места Информационные стенды
Общественные места Смотровые площадки, места с хорошим обзором
Общественные места Музеи
Общественные места Зоопарки
Общественные места Места археологических раскопок
Общественные места Места проката спорт. инвентаря
Общественные места Заведения общественного питания
Общественные места Отели, гостиницы, охотничьи и рыболовные базы
Общественные места Супермаркеты
Общественные места Магазины напитков
Общественные места Универмаги
Общественные места Бытовые магазины
Общественные места Магазины по продаже снаряжения
Общественные места Рыборловный магазин
Общественные места Охотничий магазин
Общественные места Зоомагазин
Общественные места Табачный магазин
Общественные места Место наблюдения за дикой природой
Опасности Опасные берега
Опасности Крутые склоны
Опасности Скотомогильники
Опасности Полицейкие участки
Опасности Спасательные станции
Опасности Точка экстренной помощи
Опасности Больницы и медицинские пункты
Опасности Военные сооружения
Ориентиры Ветряные двигатели
Ориентиры Водомерные посты
Ориентиры Выброшенные суда
Ориентиры Выдающиеся части зданий (шпили)
Ориентиры Памятники
Ориентиры Вышки легкого типа
Ориентиры Градирни
Ориентиры Деревья — ориентиры
Ориентиры Заводские и фабричные трубы
Ориентиры Капитальные сооружения башенного типа
Ориентиры Километровые знаки
Ориентиры Кладбища кораблей
Ориентиры Мазары, субурганы, обо
Ориентиры Радио- и телемачты
Ориентиры Футштоки
Ориентиры Рощи ориентиры
Ориентиры Крест, не имеющий большого религиозного значения
Ориентиры Геодезические ориентиры
Ориентиры Списанный самолет, используемый не по назначению
Ориентиры Списанное оружие и тяжелая техника, используемая не по назначению
Ориентиры Списанная ж/д техника, использхуемая не по назначению
Ориентиры Списанные суда, используемые не по назначению
Ориентиры Виселицы
Пешеходные пути Караванные пути и вьючные тропы
Пешеходные пути Перевалы
Пешеходные пути Фуникулеры
Пешеходные пути Подземные переходы
Пешеходные пути Овринги
Пешеходные пути Лестницы
Пешеходные пути Мосты пешеходные
Пешеходные пути Тротуары
Пешеходные пути Тропы
Пешеходные пути Велодорожка
Пешеходные пути Дорожки для верховой езды
Промышленность Ветроэлектростанции
Промышленность Гидроэлектростанции
Промышленность Тепловые электростанции
Промышленность Атомные электростанции
Промышленность Геотермальные электростанции
Промышленность Приливные электростанции
Промышленность Солнечные электростанции
Промышленность Нефтяные и газовые промыслы
Промышленность Рудники, прииски, копи
Промышленность Шахты
Промышленность Торфоразработки
Промышленность Открытые соляные разработки
Промышленность Промышленные предприятия без труб
Промышленность Промышленные предприятия с трубами
Промышленность Мельницы ветряные
Промышленность Мельницы водяные
Промышленность Склады закрытого типа
Промышленность Склады открытого типа
Промышленность Линии электропередач
Промышленность Краны козловые
Промышленность Краны мачтовые, стационарные
Промышленность Ствол шахты
Растительность Бамбук
Растительность Буреломы
Растительность Высокотравная растительность
Растительность Колки
Растительность Кустарники колючие
Растительность Кустарники обычные
Растительность Кустарниковая обсадка
Растительность Леса вырубленные
Растительность Леса горелые и сухостойные
Растительность Леса густые низкорослые
Растительность Леса густые высокие
Растительность Леса редкие низкорослые
Растительность Леса редкие высокие
Растительность Лесные питомники и молодые посадки
Растительность Луговая растительность
Растительность Мангровые заросли
Растительность Моховая и лишайниковая растительность
Растительность Обсадка вдоль дорог, рек, ручьев
Растительность Пальмовые рощи
Растительность Полукустарники
Растительность Поляны
Растительность Поросль леса
Растительность Иная древесная растительность
Растительность Камышовая и тростниковая растительность
Растительность Саксаул
Растительность Стланик
Растительность Степная травянистая растительность
Растительность Водоросли
Растительность Деревья (не имеющие ориентировочного значения)
Растительность Тип растительности
Растительность Просеки
Растительность Лесные кварталы
Растительность Пустоши
Растительность Альпийские луга
Растительность Гольцы
Рельеф Пляжи
Рельеф Насыпи
Рельеф Абсолютная высота
Рельеф Обрывистые (скалистые) берега без пляжа
Рельеф Берега с укрепленными откосами
Рельеф Бровка обрыва
Рельеф Бугры
Рельеф Береговые валы
Рельеф Исторические валы
Рельеф Прочие валы
Рельеф Выемки
Рельеф Выходы ископаемых льдов
Рельеф Галечники и гравийные поверхности
Рельеф Глина
Рельеф Горизонтали основные
Рельеф Горизонтали утолщенные
Рельеф Ледники
Рельеф Фирновые поля
Рельеф Гряды камней
Рельеф Дайки и крутостенные гряды
Рельеф Задернованные уступы
Рельеф Дюны
Рельеф Изрытые места
Рельеф Сухие канавы
Рельеф Каменные реки
Рельеф Каменистые поверхности
Рельеф Каменистые россыпи и щебеночные поверхности
Рельеф Карстовые и термокарстовые воронки
Рельеф Карьеры
Рельеф Грунты
Рельеф Кочковатые поверхности
Рельеф Грязевые вулканы
Рельеф Обычные вулканы
Рельеф Курганы
Рельеф Лавовые покровы
Рельеф Лавовые потоки
Рельеф Ледниковые трещины
Рельеф Морены
Рельеф Овраги
Рельеф Оползни
Рельеф Осыпи твердых пород
Рельеф Отвалы
Рельеф Отдельно лежащие камни
Рельеф Барханы
Рельеф Бугристые пески
Рельеф Пески лунковые и ячеистые
Рельеф Пески ровные
Рельеф Пески зыбучие
Рельеф Промоины
Рельеф Скалы и скалистые обрывы
Рельеф Скалы-останцы
Рельеф Скопление камней
Рельеф Солончаки
Рельеф Сухие русла
Рельеф Такыры
Рельеф Терриконы
Рельеф Характер породы
Рельеф Ямы
Рельеф Пещеры естественные
Рельеф Пещеры искусственные
Рельеф Вершины гор, холмов
Свойства Строящиеся объекты
Свойства Пересыхающие объекты
Свойства Глубина
Свойства Дебит
Свойства Качество воды
Свойства Направление течения
Свойства Отметки высоты уреза воды
Свойства Номер дороги
Свойства Номер съезда
Свойства Высота проезда
Свойства Грузоподъемность
Свойства Количество полос на дороге
Свойства Номер лесного квартала
Свойства Напряжение ЛЭП
Свойства Толщина деревьев
Свойства Расстояние между деревьями
Свойства Ширина
Свойства Материал сооружения
Свойства Номер дома, шурфа и до.
Свойства Объем
Свойства Относительная высота
Свойства Период доступности, затопленности
Свойства Плотность (тип) застройки
Свойства Площадь
Свойства Проходимость
Свойства Скорость
Свойства Состояние
Свойства Характеристики сухих канав
Свойства Расстояние
Свойства Ширина покрытия, проезда
Свойства Покрытые дорог
Общественные места Спортивные сооружения крытые
Общественные места Поля для гольфа
Общественные места Спортивные площадки
Общественные места Спортивные сооружения открытого типа
Общественные места Стадионы
Строения Древние исторические стены
Строения Казармы на ж/д
Строения Ограждения капитальные
Строения Ограждения легкие
Строения Легкие придорожные сооружения
Строения Отдельные строения невыдающиеся
Строения Отдельные строения разрушенные
Строения Охотничьи вышки, засидки
Строения Элеватор
Строения Бункеры ГСМ
Строения Летние лагери
Строения Альпинистские укрытия и зимовья
Строения Замки, форты, крепости
Строения Историческая усадьба
Строения Многоквартирный жилой дом
Строения Сельскохозяйственные здания
Строения Частный жилой дом
Строения Плавучий дом
Строения Дача, бунгало
Строения Деловое здание
Строения Промышленное здание
Строения Маяки
Строения Водонапорные башни
Строения Навесы, шалаши и другие легкие укрытия
Сельское хозяйство Сельскохозяйственные предприятия
Сельское хозяйство Пасека
Сельское хозяйство Пашни
Сельское хозяйство Виноградники
Сельское хозяйство Загоны для скота
Сельское хозяйство Парники, теплицы, оранжереи
Сельское хозяйство Плантации древесно-технических культур
Сельское хозяйство Плантации кустарниковых-технических культур
Сельское хозяйство Плантации травянистых технических культур
Сельское хозяйство Рисовые поля увлажняемые
Сельское хозяйство Рисовые поля затопляемые
Сельское хозяйство Фруктовые и цитрусовые сады
Сельское хозяйство Ягодные сады
Транспорт Аэропорты, аэродромы
Транспорт Блокпосты
Транспорт Вокзалы
Транспорт Гаражи
Транспорт Депо
Транспорт Железные дороги монорельсовые
Транспорт Железные дороги узкоколейные
Транспорт Железные дороги ширококолейные
Транспорт Место выхода метро на поверхность
Транспорт Морские порты, гавани
Транспорт Набережные
Транспорт Остановочные пункты
Транспорт Паромы железнодорожные
Транспорт Платформы
Транспорт Поворотные круги
Транспорт Полотно разобранных железных дорог
Транспорт Путепроводы прочие
Транспорт Речные порты
Транспорт Станции всех классов
Транспорт Станции метрополитена
Транспорт Станции на узкоколейной ж/д
Транспорт Станционные пути
Транспорт Створные знаки
Транспорт Трамвайные линии
Транспорт Число путей
Элементы дорог Съезды с автодорог
Элементы дорог Транспортные развязки
Элементы дорог Броды
Элементы дорог Паромные переправы
Элементы дорог Виадуки, путепроводы, эстакады
Элементы дорог Туннели
Элементы дорог Мосты подъемные и разводные
Элементы дорог Мосты прочие
Элементы дорог Лифт

Подкаст натуралиста. Использование данных OpenStreetMap

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

В подкасте упоминаю поисковик по базам данных от гугла: datasetsearch.research.google.com, форум OSM: forum.openstreetmap.org и отличный чат русскоязычного сообщества в телеграмме: @ruosm. Кроме этого существует канал с обобщением текущих событий в OSM: @ruosm_news и канал Ильи Зверева: @shtosm. В этих источниках вы найдете если не все, то по крайней мере ссылки на все.

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

Красная Книга Ростовской области

Красная Книга Ростовской области

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

Меня эта ситуация заебала и я оцифровал оба тома Красной Книги Ростовской области, векторизовав положение всех охраняемых видов растений и животных, присвоив им атрибуты таксономии, охранного статуса и ссылки на приложенные в тексте изображения. Все это скомпоновал в две карты на основе leaflet.js, добавил несколько полезных плагинов, подгрузил подложки OpenStreetMap, спутник от Mapbox и залил на свой сервер для общего доступа.
Красная Книга Ростовской области

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

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

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

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

Код для вставки карты краснокнижных видов Ростовской области на любой сайт выглядит так,

Животные:

<iframe src="http://городшахты.рф/maps/1704_redbook61/animals/index.html" width="800" height="400" frameborder="0" allowfullscreen="allowfullscreen"></iframe>

Растения:

<iframe src="http://городшахты.рф/maps/1704_redbook61/plants/index.html" width="800" height="400" frameborder="0" allowfullscreen="allowfullscreen"></iframe>

Кроме того, список животных из Красной Книги Ростовской области можно почерпнуть из соответствующей статьи.

У меня все. Пойду чайку сбацаю.

Визуализация рельефа по данным SRTM и ASTER GDEM в QGis+SAGA

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

В качестве показательной территории взяты Соликамский и Красновишерский районы Пермского края. В качестве подложки карта OpenStreetMap Mapnik Standart:
Соликамск и Красновишерск

Инструментом для работы послужит QGis 2.18.4 с подключенными алгоритмами SAGA. Все операции, связанные с фильтрацией и созданием изолиний можно выполнять как внутри QGis, так и запуская гис SAGA в качестве автономного приложения.

Рельеф на средне- и крупномасштабных картах в настоящее время в большинстве случаев отображается с помощью данных SRTM или ASTER GDEM, что связано с их глобальным охватом, открытостью и простотой получения. Разрешение этих данных (SRTM 90 м/пикс, ASTER GDEM 30 м/пикс) позволяет, при должной обработке, показывать особенности рельефа примерно до 15 зума. Несмотря на то, что данные ASTER точнее, их использование затруднено необходимостью дополнительной фильтрации для отсеивания значений, не отражающих реальный рельеф (например, высоты леса и жилой застройки). Оптимальных алгоритмов для такой процедуры, которые дают стабильный результат для значительной территории, не разработано, в результате чего, образец визуализации менее точных данных SRTM оказывается обычно более качественным как с геодезической, так и с художественной точек зрения. Однако, севернее 60° с.ш. и южнее 54° ю.ш. данные SRTM отсутствуют, что вынуждает в конечном итоге использовать оба набора данных при визуализации рельефа на территориях, выходящих за границы покрытия SRTM.

Наш случай именно такой (снизу данные SRTM, сверху ASTER GDEM):
ASTER и SRTM

Данные SRTM доступны из различных источников, из которых наиболее удобны сайты cgiar, gis-lab и viewfinderpanoramas. Я предпочитаю использовать последний, поскольку многие сцены там объединены и загружены сразу в geotiff-растры (обычно SRTM представлен в hdt-формате).

ASTER получить немного сложнее: сайты геологической службы США и NASA позволяют скачивать различные данные ДЗЗ, что требует от пользователя определенной подготовки. Кроме того, эти сайты иногда бывают недоступны, либо работают чрезвычайно медленно. В этих случаях можно скачать всю базу через торрент. Дополнительные источники получения данных SRTM и ASTER доступны на странице получения данных.

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

После того как исходные получены, можно запускать QGis:
ASTER и SRTM в QGis

Для начала объединим сцены ASTER в единый растр с помощью меню «растр-прочее-объединение»:
1объединение растров

В диалоговом окне укажем директорию со сценами и название итогового файла.
2объединение растров

Обратите внимание, что в некоторых версиях GDAL отказывается работать, если пути к файлам содержат кириллические символы. В моем случае все прошло успешно:
3объединение растров

Теперь сохраним полученный файл уменьшив его разрешение до разрешения SRTM. Если этого не сделать, в месте соприкосновения сцен из разных источников мы получим вот такую картину:
рельеф SRTM и ASTER

Выделяем в ТОСе наш ASTER, и через правую кнопку мыши вызываем диалоговое окно сохранения растра:
Сохранение растра в QGIS

Здесь обратите внимание на то, что-бы растр сохранялся как данные. Разрешение уменьшаем в три раза, т.е. вместо 18001 столбца вписываем 6000, а вместо 7201 строк вписываем 2400:
Сохранение растра в QGIS2

После сохранения растра он выглядит загрубленным, но все-равно более информативным, чем SRTM:
Сохранение растра в QGIS3

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

По той-же схеме объединим полученный растр с растром SRTM:
DEM-композит

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

image

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

Откроем панель инструментов в меню «анализ данных» и в списке геоалгоритмов SAGA-Grid-Filter выберем алгоритм «Простой фильтр»:

После нескольких минут обработки, алгоритм выдаст сглаженный растр:
отфильтрованный растр

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

вызовем диалог создания карты теней:

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

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

Через меню «растр-извлечение-обрезка»

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

В результате получим вот такую картину:

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

Для того, что-бы не инвертировать растр при каждой новой загрузке, сохраним его как новый слой, но на этот раз в меню сохранения отметим его не как «данные», а как «изображение». На этом создание отмывки закончено. Установим прозрачность отмывки 95% и подложим под нее OpenStreetMap:

Так выглядит чистая карта OSM:

А так выглядит карта OSM с наложенной на нее картой теней в районе соприкосновения данных SRTM и ASTER:

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

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

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

Сделаем его редактируемым (иконка желтого карандаш), после чего установим режим добавления нового объекта
Редактирование в QGis

и обведем один из районов:

Сохраним фрагмент растра для этого участка (не фильтрованного растра, а исходного, мы же усложняем себе задачу!), обрежем его по обведенной области и отфильтруем с теми же параметрами, что и при создании отмывки. Затем с помощью геоалгоритма SAGA-Shapes-GRID-Горизонтали по ЦМР создадим изолинии через каждые 50 метров высоты.

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

Отчетливо просматривается линия сочетания данных ASTER и SRTM. При различных способах фильтрации растра ASTER GDEM эту линию можно делать более или менее заметной о чем я упоминал в начале данной статьи.

Изолинии из отфильтрованного растра на этот район выглядят так:

На границе растра изолинии замыкаются и не несут в себе географического смысла. Такие участки в последующем будут удалены. Именно поэтому обрезка dem-растра производилась нами не по границе района а по внешнему слою.

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

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

После того, как изолинии извлечены, остается только обрезать их по контуру границ, сохранив оригинальные значения атрибутов изолиний. Для этого успешно применяется алгоритм «SAGA-Shapes-Lines-Пересечение линий и полигонов»:

Небольшая настройка стиля и изолинии готовы:

Обычная карта OpenStreetMap:

Тот же фрагмент карты, но с наложенной картой теней и горизонталями:

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

Данная проблема не имеет однозначного механистического решения. Наиболее оптимальные способы ее устранения зависят от требований к визуализации, выбранного региона и доступной вычислительной мощности. В качестве одного из способов решения я предлагаю использовать последовательное применение фильтра DTM (предельный уклон местности 10 градусов, радиус поиска 2 пикселя), заполнение пропусков в образованном в результате DTM-фильтрации растра (порог напряжения 10) и последующая фильтрация простым фильтром (круговой режим поиска, гладкий фильтр, радиус 5px). Этот метод не позволяет полностью избавиться от артефактов, но существенно снижает их число и сглаживает, что определенно положительно сказывается на визуализации рельефа:

Карта OpenStreetMap без отмывки и изолиний:

Карта OpenStreetMap с отмывкой и изолиниями:

Геоданные

Коллекция геоданных

Мелкомасштабные векторные данные о России

Шейп-файлы с атрибутивными данными для создания мелкомасштабных карт. Средний размер файла 0.5 мб.

Теневая отмывка рельефа регионов России

Азимут освещения 300 градусов, высота источника света 40 градусов. Файлы распространяются в формате GeoTIFF. Размер одного файла около 50 мегабайт.

Горизонтали регионов России

Интервал между горизонталями 10 м (данные о высоте указаны). Шейп-файлы размером 30-80 мб.

Данные OSM по федеральным округам (Апрель 2021, источник — Geofabrik)

Данные OSM глобального охвата (Апрель 2021, источник — Geofabrik)

Растры World Topo Bathy в формате GeoTIFF

Гидрографические объекты OpenStreetMap с дополнительной обработкой атрибутов (шейп-файл, EPSG 4326, апрель 2021)

Рубкология

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

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

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

102_4609

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

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

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

102_4755

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

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

111

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

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

102_4492

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

222

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

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

333

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

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

102_3089

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

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

102_3350

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

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

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

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

hand

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

102_4321

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

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

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

102_4702

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

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

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

108_5032

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

108_4994

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

108_4995

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

108_5026

Хуяк!

108_5028

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

shema

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

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

102_4757

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

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

102_4555

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

102_4583

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

108_4996

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

102_4553

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

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

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

108_4790

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

108_5033

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

dscn9008

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

108_4964

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

108_4905

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

108_4907

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

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