Водотоки из OpenStreetMap

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

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

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

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

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

Водоемы из OpenStreetMap

Помню, нахлынула на меня кручина и я часами обрисовывал в OSM водоемы вокруг озера Варчато. Теперь в озерном Ямало-Ненцком округе рябит голубое пятно и таких мест в OpenStreetMap не сосчитать. А еще существет вечный спор о наименованиях. Как правильно писать: «оз. Умбозеро», «озеро Умбозеро» или просто «Умбозеро»?

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

В процессе редактирования старался не жестить и правил только гидронимы на русском языке. Их я хотя бы выговорить могу, в отличие от озер Алятпильгынгытгын и Ляккылькэтыпорыльто. Среди русских топонимов тоже попалось много занятного, начиная от постоянного слова «катлаван» и заканчивая такими шедеврами как: «подземная база подводных лодок», «пока нет названия», «Отмыться после 30 маршрута», «Большие Дурманцы (на Яндекс картах)», «Убитая баба», «Ч1ат!абяр», «Верхнеафипский Лох-Несс», «Сети не ставить!!!», «Тощая щука» и «Озеро нашей любви».

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

Помимо поля «name», где указано название водоема, существуют еще поля: «type» — тип водоема (например, «озеро или «водохранилище») и «shorttype», где дано сокращение (например, «оз.» или «вдхр.»). Оригинальные значения ключей оставил в поле «fclass», площадь полигонов в «area». Актуальность данных — апрель 2021 года.

Вектор в шейпе EPSG:4326. Кроме него в архиве текстовый и экселевский файлы с таблицами. Данные могут быть полезны разработчикам картографических стилей и специалистам по топонимике.

Ре5ка

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

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

Как в Европе

Как в Европе

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

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

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

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

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

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

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

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

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

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

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

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

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

Водопой КРС

Аксайская картографическая экспедиция — ответы на вопросы

In English

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

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

Итак, погнали.

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

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

— Подготовка картографического материала для полевых работ с использованием OSM-редакторов;
— Выделение потенциальных POI, обследовать которые надлежало в реальности;
— Привлечение сообщества к оцифровке снимков и выделению объектов требующих визуальной проверки;
— Сплав по реке с наблюдением за намеченными объектами;
— Выделение объектов, которые не могут быть описаны существующей схемой тегирования;
— Добавление существующей схемы тегирования и информации о POI на карту (в базу данных);

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

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

Общая протяженность маршрута составляла 85 километров, которые включали в себя помимо самой реки Аксай, участки реки Дон, которые были намечены в качестве начала и окончания путешествия. Отчаливать предполагалось от станицы Мелиховской, завершение экспедиции ожидалось напротив железнодорожной станции «Аксай», что находится буквально в нескольких десятках метров от берега.

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

Карта сплава по реке Аксай


В действительности ситуация еще сложнее. До середины ХХ века Аксай представлял собой единый рукав.

Река Аксай на «Подробной карте земли войска Донского«, составленной под руководством генерал-майора Богдановича в 1833 году.
Карта земли войска Донского, река Аксай

А вот Аксай на карте Вермахта (оперативная обстановка на фронте 10 сентября 1942 года):
река Аксай, карта Вермахта

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

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

Из примечательностей реки следует упомянуть ее этимологию, которая говорит о целебных свойствах «белой воды» («Ак-Су») и расположенный на правом берегу памятник природы «Золотые Горки», который является, по сути коренным берегом Дона и отступив перед станицей Бессергеневской вновь появляется после Мало-Мишкинской психиатрической больницы.

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

Пирог был порезан на сто сорок четыре маленьких кусочка, которые в дальнейшем использовались и при передвижении по маршруту. Перед отправкой, я скомпоновал в QGis атлас со спутниковой подложкой Mapbox-a и Bing-a и распечатав все в формате А5. Толщина полученного тома оказалось столь велика, что пришлось отказаться от половины страниц, отведенных под записи.

Изначально разворот атласа выглядел таким образом:

Страница атласа

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

Сшитый полевой дневник:

сшитый полевой дневник

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

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

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

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

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

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

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

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

Первый участок — Холодный канал. Представляет собой наиболее блаженный с точки зрения сплава район. Он начинается от ограждения, которое установлено поперек Аксая в сотне метров от истока — ответвления рукава от Дона. Ограждение предназначено воспрепятствовать заходу судов в Аксай, воды которого имеют стратегической значение ввиду использования их на Новочеркасской ГРЭС. Однако в ограждении есть проход, позволяющий заплывать в Холодный канал лодкам:

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

Холодный канал имеет ширину около пятидесяти метров, спокойное ощутимое течение 2-3 м/сек и ровные песчаные берега. Можно даже уснуть в лодке без всякой опасности чрезвычайных происшествий.

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

Фильтрационные ограждения ГЭС

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

Аварийная дамба

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

Переход из Холодного Канала в Мертвый Аксай

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

Завал из бетонных блоков

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

Мертвый Аксай

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

Будьте внимательны, велика опасность зацепить колючую проволоку, в том числе «егозу» и наткнуться на гвозди, которые в изобилии торчат из разбросанных досок.

Третий участок пути проходит почти на открытой местности. Прибрежные леса сменяются тростниковыми зарослями. Появляется едва заметное течение, которое усиливается у станицы Кривянской и приобретает полную силу перед Новочеркасском, где в воды Мертвого Аксая вливается река Тузлов. Напротив железнодорожной станции «Студенческая» даже есть быстрина, на которой скорость течения достигает 10-15 м/сек.

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

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

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

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

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

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

Судоходство на Аксае

Погода
С погодой чрезвычайно повезло: почти все время дул северо-восточный ветер 5-10 м/сек. Незначительные осадки были в первый день, большую же часть времени облачность не превышала трех баллов. Температура днем повышалась до +30 (на солнце), ночью опускалась до +8 градусов. Барическая тенденция положительная.

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

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

На следующую ночь конструкцию палатки решено было изменить. Я перевернул лодку и соорудил укрытие такого типа:

Устройство ночлега во второй день

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

Лодка
Сплав проходил на надувной ПВХ лодке Нептун 280 украинского производства. С помощью простого маркера название модельного ряда «Нептун» было изменено и у лодки появилось собственное имя «Не-Птун», под которым она существует в настоящее время и надеюсь еще долго будет существовать.

У данной лодки только два существенных недостатка. Первый — это ее вес. Второй — это ее размер в собранном виде. Из-за этого лодка на берегу лишает путешественника всякой способности к перемещению.

Зато на воде «Не-Птун» ведет себя идеально. Пайольный пол позволяет свободно вставать в лодке в полный рост, а свободного пространства хватит на месячный запас провианта на троих человек. За время эксплуатации лодка не вызвала нареканий.

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

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

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

Инвентарь в экспедицию

На воде все компактно складывалось в кормовую часть и под заднюю банку:
Укладка груза в лодке

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

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

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

Обед на Аксае

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

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

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

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

Рыбалка
Согласно пункту 47.3 раздела IV приказа №293 министерства сельского хозяйства РФ от 1 августа 2013 г. «Об утверждении правил рыболовства для Азово-Черноморского бассейна«, с первого апреля по тридцать первое мая любительское и спортивное рыболовство запрещено «в реке Аксай с впадающими в нее реками Тузлов, Грушевка и ериком Караич, рекой Черкасской с Махинским лиманом, реке Койсуг», что вызвано, в первую очередь, охраной рыбы шемаи (Alburnus mento) из семейства Карповых, в просторечии называемой шамайкой.

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

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

Сети на Аксае

Подавляющее количество сетей установлено в верховьях Мертвого Аксая, на втором участке пути.

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

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

Приложение 1. Объекты неопределенного тегирования

Описание объекта Фотография
Завалы из бетонных блоков; Завал из бетонных блоков
Закоряженные участки реки; Закоряженные участки реки
Фильтрационные ограждения ГЭС с разделением на понтонные и сетчатые; Фильтрационные ограждения ГЭС
Аварийные дамбы ГЭС; Аварийная дамба
Водозаборы; Водозабор
Опасные для судоходства точечные объекты; Опасные для судоходства точечные объекты;
Водопой крупного рогатого скота; Водопой КРС
Участки реки, заросшие водорослями; Участки реки, заросшие водорослями
Земляные ступеньки к которым не ведет тропинка или тротуар; Земляные ступеньки к которым не ведет тропинка или тротуар
Периодически затапливаемые острова; Периодически затапливаемые острова
Трубы используемые в качестве моста; Трубы используемые в качестве моста

Приложение 2. Опубликованные статьи
Водопой КРС

Аксайская картографическая экспедиция — ответы на вопросы

In English Со дня завершения экспедиции прошло семь с половиной месяцев, а значительная часть собранного материала пока еще лежит в виде необработанных записей, файлов и предварительных выводов. Подводить окончательные итоги рано, но близится новый полевой сезон, а с ним и новые путешествия, поэтому вполне уместно раскрыть некоторые детали прошедшей поездки. Ниже я выкладываю ответы на […]

1 комментарий

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

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

1 комментарий

Демонические лики идиотизма

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

2 комментария

Фрюлинг блютет ин Аксай

Я вот сейчас в Домодедово. И знаете, что думаю? Если уж мировой прогресс дошел до такого уровня, что можно в Шахтах пить в гараже «Дон классику», а через несколько часов слушать через бесплатный вайфай пресс-конференцию Чичваркина, то просто грех не рассказать вам историю о том, как я в Аксайской картографической экспедиции плыл на героическом надувном […]

1 комментарий

Аксайская картографическая экспедиция (анонс)

In English Я давно вынашивал идею открытой картографической экспедиции. С этой целью, даже приобрел несколько лет назад отличную лодку из пвх, на которой прошлой весной проводил экскурсии по Грушевскому водохранилищу за двести рублей в час. И даже планировал сплавиться по реке после завершения летних экспедиционных работ. Но летние экспедиционные работы закончились для меня травматически, отчего […]

1 комментарий

Тоталитарный диктатор OSM

«Карты Google и Яндекс загружаются из интернета,
те они имеют привязку к сим карте сотового оператора.
OpenStreetMap, на ряду с другими навигационными программами,
является независимой от сотовой связи
и работает непосредственно со спутниками.»
Из первого релевантного сайта,
который выдал Яндекс по запросу «чем openstreetmap лучше».

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

Если мы такие офигенские, почему люди не спешат расставаться с яндо-гугло-бингокартами? Да и в чем конкретно преимущества OSM? Открытые данные? — и кому они нужны? Возможность редактировать карту? — да, люди просто мечтают разбираться в схемах тегирования и мануалах по Java для установки josm-а. Детальность прорисовки? Действительно, посмотрите: в деревне Миндюкино, где живет пятнадцать человек, отрисованы все домики — вот какой OSM крутой! Такого ни на картах Яндекса, ни на картах Гугла нет! Правда в соседнем райцентре нет нумерации домов, зато замаплены мусорные контейнеры и скамейки. Здорово!

А что делать? Правильно — нужно срочно назначить меня на пост тоталитарного диктатора OpenStreetMap. Конечно же, на следующее утро вы не найдете ни меня, ни кассу, но обещаю перед своим отлетом в теплую солнечную страну оставить письмо следующего содержания:

«Коллеги. Число новых осмеров постоянно увеличивается, это абсолютно неоспоримый факт. Однако, он ни в коем случае не должен радовать, более того, это существенный повод для беспокойства. Наивно предполагать, что скорости увеличения картографов будет соответствовать рост осмерской культуры и грамотности. А посему нас неизбежно ожидает падение активности среднего редактора, уход из проекта наиболее ценных специалистов и увеличение числа всевозможных месседжеров, которые порождают бессмысленный обмен рисунками котиков и отвлекают от работы с картой, сообществом и кодом. Экстенсивное развитие технически сложного проекта неизбежно приведет к катастрофическим последствиям, что, как всем вам известно, явно следует еще из работ Альтшуллера, Томпсона и Рене Тома.

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

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

 

Создание сервисов

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

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

Но самое интересное, что OSM тоже окружает огромное количество сервисов, вот только они либо совсем не походят для использования людьми без подготовки, либо представляют собой отдельную библиотеку на гитхабе, которую еще нужно скачать и установить. А чаще всего и первое, и второе вместе. Где вики? Где taginfo? Где overpass? Где osmbuildings? Где сервисы печати с карт? Где карты для навигаторов (это не про osm.ru)? Где OpenWeatherMap? — люди каждый день ищут погоду, это самый популярный запрос. Есть все, но все по разным местам.

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

 

Диверсификация данных

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

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

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

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

 

Конверсия ГИС

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

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

 

Технологическое развитие

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

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

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

 

Социализация

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

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

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

После прочтения этого письма прошу меня не искать — я улетел маппить солнечную и теплую страну.

Ваш Ночной Косильщик»

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

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

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

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

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

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

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

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

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

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

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

 

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

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

Недосягаемый космос

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

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

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

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

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

Но даже небольшое усложнение картируемой территории приводит к неразрешимым проблемам. Мы вынуждены либо отбрасывать информацию, упрощая содержание карты, либо постоянно создавать новые типы и классы объектов. Рано или поздно схема неизбежно запутывается.

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

Что произошло? Два класса, абсолютно разные во всем, содержат в себе один и тот же тип объекта. В нормальной иерархической классификации такое абсолютно невозможно. У нас, вместо иерархии образуется сеть из типов объектов, в которых классы всего-лишь представляют собой группы типов с определенным набором признаков. Иерархия пропадает, возникает диатропизм. В ботанике и зоологии та же хрень описана еще палеоботаником С.В. Мейеном и его учеником Ю.В. Чайковским (смотри лучшее чтиво 1990-го года: «Элементы эволюционной диатропики»).

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

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

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

Примитивная классификация данных OpenStreetMap позволяет отображать на карте огромное количество нюансов. Новый объект? — не вопрос, вот новое значение тега. Что-то совсем странное? — не вопрос, вот новый тег. Выбери в свое время Кост многоуровневую классификацию, мы получили бы сейчас головную боль в виде действия закона Ципфа: имели бы пять-шесть верхних классов, включающих 80-90 процентов всех объектов и овердохуя классов, содержащих по одному-два объекта. А в таком виде, классификация OSM сродни низкоуровневому языку или безработному без долгов: постоянно требуется вникать во множество деталей, зато никаких ограничений для творчества.

Лучше нынешней классификации OSM может быть только полный отказ от иерархии. Объединяем существующие теги и их значения в единые свойства и указываем наличие этих свойств у любого объекта. А поскольку свойства выражены в разной степени, добавляем значение истинности. Так для густого леса, вместо natural=wood мы получаем naturalwood=0.9, а для редкостойного, вместо natural=wood мы получаем naturalwood=0.3.

— Эй, бля! С твоей классификацией, мы получим таких монстров, что хер кто их распознает! Вот что это например за хуйня такая:  natural_wood=0.3, natural_scrub=0.2, natural_wetland=0.2, highway_construction=0.5,  highway_path=0.9,  barrier_ditch=1.0, landuse_construction=0.5, landuse_fill=0.7?

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

Я тут не буду намекать о том, что допуск отображения значения тегов через другие теги дает вообще космические возможности. Например, этот же объект можно в упрощенном виде записать как barrier: {natural_wood=0.3, natural_wetland=0.2, barrier_ditch=1.0}. Хотите увековечить на карте топиарное искусство? -говно вопрос: historic_memorial:{natural_scrub=1.0}. Обратите внимание, что в данном случае, natural_scrub относится именно к памятнику, то есть является его неотделимой частью. Если бы мы хотели обозначить могилу в кустах, то поступили бы по другому: historic_memorial=1.0, natural_scrub=0.4.

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