Вырубки, гари, ветровалы, поросль леса, редколесье...

Попробую подойти к решению этого вопроса с другого конца.

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

А что, если и нам взглянуть на неё шире и распространить на любую растительность. Вместо wood:density=dense получим, как вариант, vegetation:cover=very_closed, ну и далее - vegetation:age=, vegetation:height=, vegetation:origin=*, etc.

В natural при этом могут быть wood, scrub или grassland (для последнего которые теги vegetation:= могут быть неактуальны), а также любые типы natural, предполагающие какой-то растительный покров.

У нас в вики написано, что кусты - это кусты, а деревья - это деревья. Думаю, не грех взять и позаимствовать этой самой LCCS правила, что считать кустами, а что деревьями. Дословно, со всеми исключениями, и прописать в вики.

Чтобы можно было понять, что замапленные нами “кусты” - это мелкий лес, а что “лес” - это заросли бамбука, можно ввести тег vegetation:habit (или habitus?) - со значениями, соответственно, trees - деревья, perennials - многолетники, и т.д. Использовать уточняющий тег для scrub - это по-моему те же грабли, что были с wood=* и остаются с wetland=*

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

И не только предлагал, даже применял - https://taginfo.openstreetmap.org/search?q=wood2%3A

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

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

А все отдельные элементы/ярусы растительности указывать, начиная с преобладающего в vegetation=, vegetation2=; vegetation3=; и далее, в зависимости от числа этих ярусов и дотошности маппера. В густом сорокалетнем ельничке будет только один ярус, а в сложных случаях и древесный полог, и кустарники под ним могут делиться на 2-3 яруса. Порядок перечисления этих уровней в vegetation[1-9] = (единицу опускаем) зависит не от высоты, ими достигаемой, а от их значимости в ландшафте. Возможные варианты расделения по таким элементам на примере кустарниковых сообществ в этой картинке (тоже из LCCS):

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

landuse=logging
natural=scrub
vegetation=bushes
vegetation:origin=natural
vegetation:habit=trees
vegetation2=trees
vegetation2:lost=burnt

Да, должен уточнить, для vegetation=* заимствуем значения из пропозала по landcover=* - trees,bushes,grass, а так же добавляем moss и lishens (они и в LCCS стоят особняком). Иными словами, vegetation - это растительная составляющая landcover.

Разумеестя, для каждого яруса растительности все возможные уточняющие теги:
vegetation[1-9]:leaf_type=*
vegetation[1-9]:leaf_cycle=*
vegetation[1-9]:origin=*
vegetation[1-9]:habit=*
vegetation[1-9]:flaw=*
vegetation[1-9]:damage=/vegetation[1-9]:lost=
vegetation[1-9]:age=*
vegetation[1-9]:cover=*
vegetation[1-9]:height=*
vegetation[1-9]:=

Я отказался от тега vegetation, он ни о чем, описывает всё от мха до тропических деревьев.

Нулевой ярус - surface=* , water, wetland
далее

  • grassland:*
  • scrub:*
  • wood:*

тег natural это main lifeform по классификации ООН, внезапно ))) эта классификация совпадает с советскими топокартами, т.е. если основной ярус - кусты, то мох рендерить не надо. Исключение - лес по песку, болота в лесу.

Я ведь тоже думал, не сделать ли таким же образом, но.
Проблему вижу в следующем: 1) если ярусов несколько, а отрендерить нужно два (уже названный редкий лес на лугу, редкий кустарник на лугу; лес и ветровал, и т.п.) - неясно, что считать вторым элементом (с первым-то и так ясно); дальше наверно больше придирки - 2) если одна из lifeform представлена в нескольких ярусах, неясно как описывать свойства вторых, (и третьих) ярусов - wood2:,scrub2:,grassland2:?; 3) мхи и лишайники, как main lifeform - в grassland или добавлять таки moss: и lichens:* ? Ну и не только перечисленное.

Да, но я тоже чуточку шире решил к этому подойти.
surface - все грунты и горные породы из landcover, также water и wetland;
subsurface - грунты и горные породы, для описания, когда это имеет смысл, дна водоёмов, болот; или, допустим, тонкий слой почвы в лесу известняком - это тоже subsurface.

Vegetation+surface - это вторая жизнь тега landcover

Степень влажности почвы указать как-то отдельно. А то “ниочём” это у нас о wetland :slight_smile:
А также, возможно, степень плодородия(продуктивности) почвы, но это в большинстве случаев можно исходя из surface определить.

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

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

(Микрорельеф у меня рисуется, включая кочки и барханы, использую тег surface:pattern=*)

Возникла проблема - крайне сложно работать с wood:damage и wood:lost. Сколько повалено или сгорело, больше половины, меньше половины, или просто есть участки, пройденные пожаром.

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

Мне кажется логичнее типа такого

wood:burnt=very_low|low|moderate|moderately_severe|severe
(опционально на человеческом языке **half|complete|lost| 0-100%
wood:windfall=…
wood:dead=…
**
Буду копать в эту сторону.

из гугла

Severity class    Rule
-------------------------------------
Very Low          No Mortality
Low               % Mort Tally < 25
Moderate          % Mort Tally < 60
Moderately Severe % Mort Tally < 90
Severe            % Mort Tally >= 90


Но ведь есть же process.lua где можно переделать теги как душе угодно.

Я не использую osm2pgsql, но это не главное. Я долго возился с тегами, в т.ч. wood:damage. И так, и сяк. С остальными wood:* никаких проблем, всё логично, но тут небольшой косячок. Есть повод задуматься, обсудить, устранить противоречия.

Поддерживаю. Давно надо было что-то сделать с этим.

Находки в копилку лесных тегов, присутствуют в taginfo

(1) planted= - примерная дата высадки, ИМО при наличии такого тега wood:origin подразумевается planted=yes
(2) burnt= - примерное время пожаров, совместно с уровнем пожара можно прогнозировать что там сейчас рендерить - гарь, поросль или нормальный лес (естественно при наличии natural=wood);
(3) landuse=plant_nursery + (plant=tree | trees=*) - питомники

Извиняюсь, я неправильно истолковал термин thicket, оказалось по-нашему это “заросли”, относится как к поросли, так и молоденьким деревьям. (Пример: What Can You Do with Dense Thickets of Hardwood Saplings?)
Это ближе к плотности, а не высоте или возрасту, очевидно не то что я имел в виду.

Почитал ещё англоязычную литературу, нашел такой документ с хорошими комментариями и сравнение разных классификаций, у них там тоже каша (есть даже Climax Recognition )).
Vegetation Stages White Paper - US Forest Service

ИМО исходя из этого документа и тех, что были продемонстрированы ранее в теме, к стадиям формирования растительного покрова ближе эти термины (в скобках - теги русской терминологии, совпадающие по описанию http://wiki.openstreetmap.org/wiki/RU:Key:wood))

  1. Поросль, саженцы < 3-4m → seedling (у нас natural=scrub, а по описанию и wood:age=very_young)
    2a. Поросль, молодые деревца < 10m → sapling (у нас wood:age=young)

2b. Молодой лес, ещё не начал прореживаться → pole (у нас wood:age=young)
3. Оформившиеся деревья, начинает формироваться подлесок → young (у нас wood:age=middle)
4. mature (у нас wood:age=adult)
5. old-growth (у нас wood:age=old)

Меня больше всего интересовал п.п. 1 и 2а, буду ориентироваться на термины seedling и sapling

Очевидно что некоторые стадии формирования леса в англоязычной и русской терминологиях не совпадают - то что у нас средневозрастной лес у них young.

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

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

chnav, не услышал ваших соображений, как будем тегировать древесный полог из двух ярусов. Типичный пример - старая вырубка с оставленным на корню тонкомером (wood:age=middle), возобновившаяся молодым поколением леса (wood:age=young). Тут wood’а сразу два и не получится затегировать как, например, редкий лес с кустами - wood:= + scrub:=.

Всё верно, об этом примерно и речь.

https://forum.openstreetmap.org/viewtopic.php?pid=633109#p633109

Продолжу про многоярусные ландшафты.
Даже если natural=scrub + scrub:= + wood:=, мне всё равно не хватает “титульного” тега для второстепенного яруса. Тег с неймспейсом - он же только уточняющий.

Я выше предлагал ввести vegetation[1-9]=* + vegetation[1-9]:=. Нет. Это будет уже четвёртый (или какой уже?) способ затегировать лес.

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

Но вот со степенью покрытия получается ерунда: landcover:cover=open :smiley: “Density”, как я писал, для новой схемы не очень подходит.

Лес по разному растёт, какому-то 5 лет потребуется, чтобы перешагнуть порог 3-4 метров, какому-то 10, а какому-то 20, а иному может и 40. Но в целом да, можно считать что seedling полностью соответствует very_young и не привязывать его к возрасту. Речь, понятное дело, идёт об обычном лесе.

С маппингом именно seedling’а возникнут некоторые трудности, надёжно определить его можно только в натуре. На снимках видно тот, который на данный момент уже вырос. Я изрядное количество молодняков отметил как scrub, что станет неправильным.

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

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

Формулы можно взять самые простые, для наших целей точности процентов в 5, а то и 10 (сложно оценить) будет достаточно.

δ=23,45⋅sin(360⋅(d-81)/365,25)=-23,45⋅cos(360⋅(10+d)/365,25) - склонение Солнца
a=arcsin(sinϕ⋅sinδ+cosϕ⋅cosδ⋅cosH) - высота Солнца над горизонтом

Собственно высоту дерева вычисляем, умножая длину тени на тангенс a.
Ошибка в основном связана с тем, что орбита Земли не совсем круглая и кол-во дней в солнечном году не целое.

Для себя запилил табличку-калькулятор в Excel и скопировал в гуглотаблицы: tinyurl.com/hkkoy9k. Входные данные - длина тени, азимут солнца, дата снимка, географическая широта. Без гуглоаккаунта не позволит редактировать, но скачать можно.

Для случаев многоярусности напрашивается логичный выход - делать второй мультиполигон и вешать доп.теги на него (в т.ч. layer=* чтобы отделить однотипные natural=wood).

Т.е. снизу вверх будет
wood:*
wood:* + layer=1
wood:* + layer=2

Второй вариант - перечислять подтипы в теге vegetation=a,b,c… где в качестве значений принять какую-то классификацию, например vegetation=wood_mature_sparse_broadleaved;wood_young_open_broadleaved

Боюсь второй вариант в нашем проекте будет крайне сложно поддерживать. Но vegetation1:* - vegetation:9:* ещё хуже.

Вообще пора отходить от лоскутных одеял. Растет трава ? Значит рисуем огромный полигон травы. На траве есть пучки кустов ? Рисуем их вторым полигоном с перекрытием без дырок в первом. Появилась поросль - третий полигон. И т.д. как в обычных ГИС. Это уже дело рендера выбирать что и в каком порядке отображать. Если нужен более полный анализ - алгоритмом point-in-polygon протыкаем все слои и смотрим что нанизалось.

Если использовать layer, то могут утонуть дороги и ручьи. Может и не утонут, но вики предостерегает.
Вместо layer нужен другой тег. И, как мне видится, он должен отражать не очерёдность ярусов снизу вверх, а их важность, “долю участия” по убыванию. И тег natural оставить только на главном.

Пример: osm.org.ru/#map=16/59.965/50.006&layer=B
Два объекта на одной площади:
natural=wood + wood:density=very_sparse + height=33 + layer=1
natural=scrub + scrub=seedling + height=1

Отображаться на большинстве карт будет или верхний (“лес”, а не “кусты”), или рандомно один или другой - многих рендерах, которые не знают, что такое layer. В обоих случаях ошибка. А если ещё будут полигон травы-кустарничков, мхов-лишайников? Конвертерами всё это будет вытаскиваться, а работать не будет.
Поэтому, на мой взгляд, если двумя полигонами, лучше как-то так:
natural2=wood + wood:density=very_sparse + height=33 + layer=1
natural=scrub + scrub=seedling + height=1

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