Не живем, а готовимся

Так оно и бывает. В пятницу встретимся, водки выпьем, обсудим в каких числах лучше ехать на охоту. Лицензия на лося есть, оружие в порядке, настроение боевое. А потом не сложилось — суета, дела какие-то. Ладно, еще съездим.

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

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

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

Кассовый героизм

Кассовый героизм

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

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

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

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

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

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

Типы с приставками

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

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

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

Россия здесь не на первых позициях, у нас зарегистрировано лишь 126 гербариев из 3100, но гербарии весьма почтенные: старинные и объемные. В одном из них мне даже довелось пару лет работать. Может и работал бы до сих пор, но жаль обменять печень на познания гербарной терминологии.

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

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

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

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

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

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

Вид

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

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

Я понимаю, никто не хочет вникать проблему понятия вида. Хотя бы потому, что единственным, кому это в достойной мере удалось был даосский философ Хоу Сян. Этот тот страшный мужик с головой Ельцина, которого каждый день показывали по ОРТ. Что такое вид? Правильный ответ: «А хрен его знает».

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

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

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

Концепция сработала, но вот беда, значение каждого критерия оказалось разным. А значит сразу возникают вопросы: какой из критериев и на каком основании считать важнейшим? И что делать, если критерии противоречат друг другу? И чем объясняется достаточность набора критериев? Хотя, об этом спрашивали и до Ривза с Ричардсоном. И Розенберг спрашивал, и Шварц с МакКелви. Но не вздумайте спросить: «Ребята, может вы принцип не тот используете? Он вообще пригоден?». «Ты ничего не понимаешь. Мы ученые и мы эту классификацию уже двести лет пытаемся построить».

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

Планы эвакуации

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

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

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

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

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

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

Научная неполнота

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

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

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

Эклектика в картографии

Согласен, что Остап Юрского — это классика, но картографам предлагаю смотреть «Двенадцать стульев» более позднего времени, где Бендера играет Миронов. Именно в этом фильме карта убедительно раскрывает важный, но неочевидный потенциал.

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

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

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

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

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

Картографический стиль «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>

Уличная картография в Авейру

Продолжаю обозревать свои коллекции. В этот раз решил начать разговор о пигс-картографии на примере карт небольшого португальского городка: https://youtu.be/i2G0JrSyKJk


Дедовский метод

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

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

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

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

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

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