be4d43105e
Node.js/Express backend + vanilla JS frontend. Features: real-time collaborative whiteboard (SSE), multi-page support, LaTeX formulas, shapes/connectors, coordinate systems, number lines, compass, zoom/pan, Catmull-Rom pencil smoothing, ruler/protractor with rotation & resize controls, minimap navigation overlay, auto-measurements, multi-page thumbnails sidebar, PNG export, page templates. Student/teacher workflows: classes, assignments, library, dashboard. Mobile responsive. SQLite (better-sqlite3). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
808 lines
69 KiB
JavaScript
808 lines
69 KiB
JavaScript
/**
|
||
* Seed: Красная книга Республики Беларусь
|
||
* 80 видов, 8 групп, пищевая сеть, популяционные тренды
|
||
* Запуск: node src/db/seed-red-book.js (из папки backend/)
|
||
*/
|
||
require('./migrate');
|
||
const db = require('./db');
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════════
|
||
GUARD — пропустить если уже засеяно
|
||
══════════════════════════════════════════════════════════════════════════ */
|
||
const already = db.prepare("SELECT COUNT(*) as n FROM rb_species").get();
|
||
if (already.n > 0) {
|
||
console.log(`Красная книга: уже засеяно ${already.n} видов, пропускаем.`);
|
||
process.exit(0);
|
||
}
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════════
|
||
ГРУППЫ
|
||
══════════════════════════════════════════════════════════════════════════ */
|
||
const insGroup = db.prepare('INSERT INTO rb_groups (name_ru, name_lat, icon, color) VALUES (?,?,?,?)');
|
||
const groups = {};
|
||
[
|
||
['Птицы', 'Aves', '🦅', '#0369a1'],
|
||
['Млекопитающие', 'Mammalia', '🦌', '#92400e'],
|
||
['Растения', 'Plantae', '🌿', '#166534'],
|
||
['Насекомые', 'Insecta', '🦋', '#b45309'],
|
||
['Рыбы', 'Pisces', '🐟', '#0e7490'],
|
||
['Рептилии и амфибии','Reptilia/Amphibia','🦎','#4d7c0f'],
|
||
['Грибы', 'Fungi', '🍄', '#7c3aed'],
|
||
['Мхи и лишайники', 'Bryophyta', '🌱', '#065f46'],
|
||
].forEach(([name_ru, name_lat, icon, color]) => {
|
||
const id = insGroup.run(name_ru, name_lat, icon, color).lastInsertRowid;
|
||
groups[name_ru] = id;
|
||
});
|
||
console.log('✓ Группы');
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════════
|
||
БИОМЫ
|
||
══════════════════════════════════════════════════════════════════════════ */
|
||
const insHabitat = db.prepare('INSERT INTO rb_habitats (name, type, description, sound_file) VALUES (?,?,?,?)');
|
||
const habitats = {};
|
||
[
|
||
['Широколиственный лес', 'forest', 'Дубравы и грабово-дубовые леса Полесья и центральной Беларуси', 'forest.mp3'],
|
||
['Хвойный лес', 'conifer', 'Сосновые и еловые боры, тайга северной Беларуси', 'conifer.mp3'],
|
||
['Болото', 'wetland', 'Верховые и низинные болота, крупнейшие в Европе', 'wetland.mp3'],
|
||
['Река и озеро', 'river', 'Пресноводные водоёмы: Припять, Нёман, Западная Двина', 'river.mp3'],
|
||
['Луг и поле', 'meadow', 'Заливные и суходольные луга, агроландшафты', 'meadow.mp3'],
|
||
].forEach(([name, type, description, sound_file]) => {
|
||
const id = insHabitat.run(name, type, description, sound_file).lastInsertRowid;
|
||
habitats[name] = id;
|
||
});
|
||
console.log('✓ Биомы');
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════════
|
||
ВИДЫ
|
||
══════════════════════════════════════════════════════════════════════════ */
|
||
const insSp = db.prepare(`
|
||
INSERT INTO rb_species
|
||
(group_id, habitat_id, name_ru, name_be, name_lat, category, by_category,
|
||
description, interesting_fact, threats, conservation, where_to_see,
|
||
photo_url, model_type, population_trend, biomass_kg)
|
||
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
|
||
`);
|
||
const insReg = db.prepare('INSERT OR IGNORE INTO rb_species_regions (species_id, region_code) VALUES (?,?)');
|
||
const insPop = db.prepare('INSERT INTO rb_population_data (species_id, year, count_estimate, source) VALUES (?,?,?,?)');
|
||
|
||
function sp(data) {
|
||
const id = insSp.run(
|
||
groups[data.group], habitats[data.habitat] || null,
|
||
data.name_ru, data.name_be || '', data.name_lat || '',
|
||
data.category, data.by_category || 'III',
|
||
data.description || '', data.fact || '',
|
||
JSON.stringify(data.threats || []),
|
||
data.conservation || '', data.where_to_see || '',
|
||
data.photo || '', data.model || 'silhouette',
|
||
JSON.stringify(data.trend || []),
|
||
data.biomass || 0
|
||
).lastInsertRowid;
|
||
(data.regions || []).forEach(r => insReg.run(id, r));
|
||
(data.popdata || []).forEach(([year, count, src]) => insPop.run(id, year, count, src || 'КК РБ'));
|
||
return id;
|
||
}
|
||
|
||
const ids = {};
|
||
|
||
db.exec('BEGIN');
|
||
try { // species block
|
||
|
||
/* ── ПТИЦЫ ─────────────────────────────────────────────────────────────── */
|
||
|
||
ids.orlan = sp({
|
||
group: 'Птицы', habitat: 'Река и озеро',
|
||
name_ru: 'Орлан-белохвост', name_be: 'Арлан-белахвост', name_lat: 'Haliaeetus albicilla',
|
||
category: 'NT', by_category: 'III',
|
||
description: 'Крупнейший хищник среди белорусских орлиных. Размах крыльев достигает 240 см. Гнездится у крупных водоёмов, охотится на рыбу и уток. Пара занимает одно гнездо десятилетиями, достраивая его каждый год — масса гнезда может превышать тонну.',
|
||
fact: 'Орлан развивает скорость пикирования до 100 км/ч. Гнездо одной пары в Беловежской пуще весило 600 кг.',
|
||
threats: ['Беспокойство у гнёзд', 'Отравление свинцом из охотничьей дроби', 'Вырубка леса у водоёмов'],
|
||
conservation: 'Охраняется в заповедниках. Программа мониторинга гнёзд. Запрет охоты.',
|
||
where_to_see: 'НП «Припятский», НП «Браславские озёра», Беловежская пуща',
|
||
model: 'procedural', biomass: 5.5,
|
||
regions: ['brest','gomel','vitebsk','grodno','minsk','mogilev'],
|
||
popdata: [[1990,150,'КК РБ 1993'],[2000,200,'КК РБ 2004'],[2010,280,'КК РБ 2015'],[2024,350,'Мониторинг 2024']],
|
||
trend: [{year:1990,count:150},{year:2000,count:200},{year:2010,count:280},{year:2024,count:350}],
|
||
});
|
||
|
||
ids.chorny_aist = sp({
|
||
group: 'Птицы', habitat: 'Широколиственный лес',
|
||
name_ru: 'Чёрный аист', name_be: 'Чорны бусел', name_lat: 'Ciconia nigra',
|
||
category: 'NT', by_category: 'III',
|
||
description: 'В отличие от белого аиста, чёрный предпочитает глухие леса с ручьями и реками. Оперение с зелёным и пурпурным металлическим блеском. Зимует в Африке южнее Сахары. Чрезвычайно осторожен — при беспокойстве бросает гнездо.',
|
||
fact: 'Чёрный аист преодолевает до 10 000 км во время миграции. В Беларуси гнездится около 900 пар.',
|
||
threats: ['Вырубка старовозрастных лесов', 'Осушение болот', 'Беспокойство у гнёзд'],
|
||
conservation: 'Охраняемые зоны вокруг гнёзд радиусом 200 м. Сохранение старовозрастных деревьев.',
|
||
where_to_see: 'Беловежская пуща, НП «Припятский», ПЗ «Налибокский»',
|
||
model: 'procedural', biomass: 3.0,
|
||
regions: ['brest','gomel','grodno','minsk','vitebsk'],
|
||
popdata: [[1990,600,'КК РБ 1993'],[2005,800,'КК РБ 2004'],[2015,850,'КК РБ 2015'],[2024,920,'Мониторинг 2024']],
|
||
trend: [{year:1990,count:600},{year:2005,count:800},{year:2015,count:850},{year:2024,count:920}],
|
||
});
|
||
|
||
ids.skopa = sp({
|
||
group: 'Птицы', habitat: 'Река и озеро',
|
||
name_ru: 'Скопа', name_be: 'Скапа', name_lat: 'Pandion haliaetus',
|
||
category: 'VU', by_category: 'II',
|
||
description: 'Уникальный хищник, питающийся исключительно рыбой. Ныряет в воду на глубину до 1 м. Пальцы покрыты шипами для удержания скользкой добычи. Строит гнёзда на вершинах сухих деревьев или опорах ЛЭП.',
|
||
fact: 'Скопа — единственная хищная птица мира, охотящаяся только на рыбу и обитающая на всех континентах кроме Антарктиды.',
|
||
threats: ['Деградация рыбных ресурсов', 'Беспокойство у гнёзд', 'Гибель на ЛЭП'],
|
||
conservation: 'Установка искусственных гнездовых платформ. Охранные зоны у гнёзд.',
|
||
where_to_see: 'Браславские озёра, НП «Нарочанский», озёра Витебской области',
|
||
model: 'procedural', biomass: 1.8,
|
||
regions: ['vitebsk','minsk','grodno','brest'],
|
||
popdata: [[1990,50,'КК РБ 1993'],[2005,70,'КК РБ 2004'],[2015,90,'КК РБ 2015'],[2024,110,'Мониторинг 2024']],
|
||
trend: [{year:1990,count:50},{year:2005,count:70},{year:2015,count:90},{year:2024,count:110}],
|
||
});
|
||
|
||
ids.dergach = sp({
|
||
group: 'Птицы', habitat: 'Луг и поле',
|
||
name_ru: 'Коростель', name_be: 'Дзяргач', name_lat: 'Crex crex',
|
||
category: 'VU', by_category: 'III',
|
||
description: 'Скрытная птица влажных лугов. Слышать его легко — самец кричит «дёрг-дёрг» всю ночь, но увидеть почти невозможно. Прилетает поздно весной из Африки. Численность резко падает из-за раннего сенокоса.',
|
||
fact: 'Коростель бежит быстрее, чем летит. Его крик слышен за 1,5 км в тихую ночь.',
|
||
threats: ['Ранний механизированный сенокос', 'Осушение лугов', 'Хищники'],
|
||
conservation: 'Рекомендации по срокам сенокоса (после 1 августа). Сохранение пойменных лугов.',
|
||
where_to_see: 'Пойма Припяти, Нарочанский НП, луга Брестской области',
|
||
biomass: 0.15,
|
||
regions: ['brest','gomel','grodno','minsk','vitebsk','mogilev'],
|
||
popdata: [[1990,5000,'КК РБ 1993'],[2005,3500,'КК РБ 2004'],[2015,2800,'КК РБ 2015'],[2024,2200,'Мониторинг 2024']],
|
||
trend: [{year:1990,count:5000},{year:2005,count:3500},{year:2015,count:2800},{year:2024,count:2200}],
|
||
});
|
||
|
||
ids.zhuravl = sp({
|
||
group: 'Птицы', habitat: 'Болото',
|
||
name_ru: 'Серый журавль', name_be: 'Шэры жураўль', name_lat: 'Grus grus',
|
||
category: 'NT', by_category: 'IV',
|
||
description: 'Символ белорусских болот. Пары создаются на всю жизнь. Весной и осенью собирается на полях в стаи до нескольких тысяч птиц. Токование — один из самых красивых ритуалов среди птиц: прыжки, взмахи крыльями, трубный крик.',
|
||
fact: 'Журавль живёт до 25 лет в дикой природе. Беларусь — один из главных «журавлиных» регионов Европы с населением ~20 000 пар.',
|
||
threats: ['Осушение болот', 'Беспокойство в период гнездования'],
|
||
conservation: 'Сохранение болотных массивов. Охраняемые территории на токовищах.',
|
||
where_to_see: 'НП «Припятский», Ельня, Освейское болото',
|
||
model: 'procedural', biomass: 5.0,
|
||
regions: ['vitebsk','minsk','gomel','brest','grodno','mogilev'],
|
||
trend: [{year:1990,count:15000},{year:2010,count:18000},{year:2024,count:20000}],
|
||
});
|
||
|
||
ids.zmeeyed = sp({
|
||
group: 'Птицы', habitat: 'Широколиственный лес',
|
||
name_ru: 'Змееяд', name_be: 'Змеяед', name_lat: 'Circaetus gallicus',
|
||
category: 'EN', by_category: 'II',
|
||
description: 'Специализированный охотник на рептилий. Питается почти исключительно змеями, в том числе гадюками. Иммунитет к яду позволяет заглатывать змею живой. Редчайший в Беларуси — гнездятся единицы пар.',
|
||
fact: 'Змееяд способен заглотить гадюку длиной 1 м. В Беларуси гнездится не более 15–20 пар.',
|
||
threats: ['Вырубка старых лесов', 'Снижение численности рептилий', 'Беспокойство'],
|
||
conservation: 'Охрана известных гнёзд. Мониторинг численности.',
|
||
where_to_see: 'ПЗ «Полесский», Беловежская пуща',
|
||
biomass: 1.9,
|
||
regions: ['brest','gomel'],
|
||
popdata: [[2000,12,'КК РБ 2004'],[2015,15,'КК РБ 2015'],[2024,18,'Мониторинг 2024']],
|
||
trend: [{year:2000,count:12},{year:2015,count:15},{year:2024,count:18}],
|
||
});
|
||
|
||
ids.vorobiny_sych = sp({
|
||
group: 'Птицы', habitat: 'Хвойный лес',
|
||
name_ru: 'Воробьиный сыч', name_be: 'Верабіны сычык', name_lat: 'Glaucidium passerinum',
|
||
category: 'VU', by_category: 'III',
|
||
description: 'Самая маленькая сова Европы — размером с дрозда. Активна как днём, так и ночью. Делает запасы пищи в дуплах на зиму. Голос — монотонный свист, слышный далеко в лесу.',
|
||
fact: 'Несмотря на размер с воробья, воробьиный сыч охотится на добычу крупнее себя — полёвок и мелких птиц.',
|
||
threats: ['Вырубка старых ельников', 'Исчезновение дупел'],
|
||
conservation: 'Сохранение старовозрастных ельников. Вывешивание искусственных дупел.',
|
||
where_to_see: 'Налибокская пуща, Беловежская пуща, Ельнянский заказник',
|
||
biomass: 0.08,
|
||
regions: ['grodno','vitebsk','minsk'],
|
||
});
|
||
|
||
ids.krasnozobaya_kazarka = sp({
|
||
group: 'Птицы', habitat: 'Река и озеро',
|
||
name_ru: 'Краснозобая казарка', name_be: 'Чырванашыйная казарка', name_lat: 'Branta ruficollis',
|
||
category: 'EN', by_category: 'II',
|
||
description: 'Одна из самых красивых арктических гусей. В Беларуси встречается только во время миграций — зимует на Чёрном море. Численность катастрофически сокращается из-за охоты на зимовках.',
|
||
fact: 'Краснозобая казарка гнездится исключительно в тундре Западной Сибири. Беларусь — транзитный коридор миграции.',
|
||
threats: ['Охота на зимовках', 'Изменение климата', 'Беспокойство на миграционных стоянках'],
|
||
conservation: 'Запрет охоты. Охрана мест остановок на миграции.',
|
||
where_to_see: 'Полесские водохранилища, озёра Витебщины (пролёт)',
|
||
biomass: 1.5,
|
||
regions: ['gomel','brest','vitebsk'],
|
||
});
|
||
|
||
ids.filin = sp({
|
||
group: 'Птицы', habitat: 'Хвойный лес',
|
||
name_ru: 'Филин', name_be: 'Пугач', name_lat: 'Bubo bubo',
|
||
category: 'VU', by_category: 'II',
|
||
description: 'Крупнейшая сова планеты. Ночной охотник, способный атаковать добычу весом до 3 кг. Охотничий участок пары — до 80 км². Низкое токование самца слышно за 4 км в тихую ночь.',
|
||
fact: 'Филин — единственная птица, которая регулярно охотится на других хищников: ловит ястребов и даже молодых орланов.',
|
||
threats: ['Фактор беспокойства', 'Гибель на ЛЭП', 'Оскудение кормовой базы'],
|
||
conservation: 'Охрана гнёзд. Изоляция ЛЭП. Мониторинг популяции.',
|
||
where_to_see: 'Беловежская пуща, ПЗ «Налибокский», НП «Припятский»',
|
||
model: 'procedural', biomass: 2.7,
|
||
regions: ['brest','grodno','gomel','minsk'],
|
||
trend: [{year:1990,count:200},{year:2010,count:250},{year:2024,count:280}],
|
||
});
|
||
|
||
ids.zhuravl_seryi2 = sp({
|
||
group: 'Птицы', habitat: 'Болото',
|
||
name_ru: 'Большой подорлик', name_be: 'Вялікі арол-крычун', name_lat: 'Clanga clanga',
|
||
category: 'EN', by_category: 'II',
|
||
description: 'Один из самых редких орлов Европы. Гнездится в старых лиственных лесах рядом с болотами и поймами. Питается амфибиями, мышевидными грызунами. Особенно уязвим из-за низкой плодовитости — одно яйцо в кладке.',
|
||
fact: 'В мире гнездится менее 10 000 пар большого подорлика. Беларусь — один из ключевых регионов гнездования в Европе.',
|
||
threats: ['Осушение болот и пойм', 'Вырубка пойменных лесов', 'Беспокойство'],
|
||
conservation: 'Охрана гнёзд. Сохранение болотных массивов.',
|
||
where_to_see: 'НП «Припятский», Полесский радиационно-экологический заповедник',
|
||
biomass: 2.0,
|
||
regions: ['gomel','brest','minsk'],
|
||
popdata: [[2000,80,'КК РБ 2004'],[2015,90,'КК РБ 2015'],[2024,100,'Мониторинг 2024']],
|
||
trend: [{year:2000,count:80},{year:2015,count:90},{year:2024,count:100}],
|
||
});
|
||
|
||
/* ── МЛЕКОПИТАЮЩИЕ ──────────────────────────────────────────────────────── */
|
||
|
||
ids.zubr = sp({
|
||
group: 'Млекопитающие', habitat: 'Широколиственный лес',
|
||
name_ru: 'Зубр европейский', name_be: 'Зубр', name_lat: 'Bison bonasus',
|
||
category: 'VU', by_category: 'III',
|
||
description: 'Крупнейшее наземное млекопитающее Европы. Масса самца достигает 920 кг при высоте в холке 188 см. Вид был полностью истреблён в дикой природе к 1927 году — всё нынешнее поголовье (около 7000 особей в мире) происходит от 12 зубров из зоопарков. Беларусь сыграла ключевую роль в восстановлении вида.',
|
||
fact: 'Зубр может прыгнуть в высоту до 2 м. Беловежская пуща — колыбель восстановления этого вида.',
|
||
threats: ['Инбридинг из-за малой генетической базы', 'Болезни', 'Браконьерство'],
|
||
conservation: 'Беловежская пуща — ключевой центр разведения. Программы реинтродукции в Европе.',
|
||
where_to_see: 'Беловежская пуща (основная популяция), Налибокская пуща',
|
||
model: 'procedural', biomass: 650,
|
||
regions: ['brest','grodno','minsk','vitebsk'],
|
||
popdata: [[1927,0,'Летопись'],[1960,150,'КК РБ'],[1990,850,'КК РБ 1993'],[2010,1500,'КК РБ 2015'],[2024,2000,'Мониторинг 2024']],
|
||
trend: [{year:1927,count:0},{year:1960,count:150},{year:1990,count:850},{year:2010,count:1500},{year:2024,count:2000}],
|
||
});
|
||
|
||
ids.rys = sp({
|
||
group: 'Млекопитающие', habitat: 'Хвойный лес',
|
||
name_ru: 'Рысь евразийская', name_be: 'Рысь', name_lat: 'Lynx lynx',
|
||
category: 'NT', by_category: 'III',
|
||
description: 'Крупнейший кошачий хищник Европы. Ведёт одиночный ночной образ жизни. Охотится главным образом на косуль и зайцев, реже на других оленей. Огромные лапы работают как снегоступы — рысь не проваливается в снег глубиной до 50 см.',
|
||
fact: 'Рысь может прыгнуть на расстояние 7 м. Она единственная крупная кошка, живущая севернее 60° с.ш.',
|
||
threats: ['Браконьерство', 'Фрагментация лесных массивов', 'Снижение кормовой базы'],
|
||
conservation: 'Полный запрет охоты. Охрана крупных лесных массивов. GPS-мониторинг.',
|
||
where_to_see: 'Налибокская пуща, Беловежская пуща, Освейский заказник',
|
||
model: 'procedural', biomass: 22,
|
||
regions: ['grodno','minsk','vitebsk','brest'],
|
||
popdata: [[1990,350,'КК РБ 1993'],[2005,500,'КК РБ 2004'],[2015,650,'КК РБ 2015'],[2024,700,'Мониторинг 2024']],
|
||
trend: [{year:1990,count:350},{year:2005,count:500},{year:2015,count:650},{year:2024,count:700}],
|
||
});
|
||
|
||
ids.medved = sp({
|
||
group: 'Млекопитающие', habitat: 'Хвойный лес',
|
||
name_ru: 'Бурый медведь', name_be: 'Буры мядзведзь', name_lat: 'Ursus arctos',
|
||
category: 'NT', by_category: 'III',
|
||
description: 'Крупнейший хищник фауны Беларуси. Всеяден — рацион на 80% состоит из растительной пищи. Залегает в берлогу с ноября по март. В Беларуси обитает на северо-востоке, сохранились лишь периферийные популяции.',
|
||
fact: 'Медведь чует запах еды с расстояния 20 км. Самка рожает медвежат в берлоге прямо в январе, весящих всего 500 г.',
|
||
threats: ['Браконьерство', 'Фрагментация лесов', 'Деградация кормовой базы'],
|
||
conservation: 'Запрет охоты. Охрана берлог. Мониторинг численности.',
|
||
where_to_see: 'Полоцкий район Витебской области, Освейский заказник',
|
||
model: 'procedural', biomass: 180,
|
||
regions: ['vitebsk','mogilev'],
|
||
popdata: [[1990,80,'КК РБ 1993'],[2005,70,'КК РБ 2004'],[2015,65,'КК РБ 2015'],[2024,60,'Мониторинг 2024']],
|
||
trend: [{year:1990,count:80},{year:2005,count:70},{year:2015,count:65},{year:2024,count:60}],
|
||
});
|
||
|
||
ids.norka = sp({
|
||
group: 'Млекопитающие', habitat: 'Река и озеро',
|
||
name_ru: 'Европейская норка', name_be: 'Еўрапейская норка', name_lat: 'Mustela lutreola',
|
||
category: 'CR', by_category: 'I',
|
||
description: 'Один из самых редких хищников Европы. Конкурентно вытеснена завезённой американской норкой. Держится у небольших рек с захламлёнными берегами. Отличается от американской норкой белым пятном на верхней губе.',
|
||
fact: 'Европейская норка занесена в Красную книгу МСОП как находящаяся под критической угрозой исчезновения. В Беларуси обитает менее 500 особей.',
|
||
threats: ['Конкуренция с американской норкой', 'Охота/отлов', 'Деградация береговой растительности'],
|
||
conservation: 'Программа разведения в неволе. Отлов и стерилизация американской норки. Реинтродукция.',
|
||
where_to_see: 'Полесье, бассейн Немана',
|
||
biomass: 0.6,
|
||
regions: ['brest','gomel','grodno'],
|
||
popdata: [[1990,2000,'КК РБ 1993'],[2005,800,'КК РБ 2004'],[2015,400,'КК РБ 2015'],[2024,300,'Мониторинг 2024']],
|
||
trend: [{year:1990,count:2000},{year:2005,count:800},{year:2015,count:400},{year:2024,count:300}],
|
||
});
|
||
|
||
ids.vydra = sp({
|
||
group: 'Млекопитающие', habitat: 'Река и озеро',
|
||
name_ru: 'Речная выдра', name_be: 'Выдра', name_lat: 'Lutra lutra',
|
||
category: 'NT', by_category: 'III',
|
||
description: 'Полуводный хищник семейства куньих. Мастер плавания — способна задерживать дыхание на 4 минуты. Поедает рыбу, раков, лягушек. Индикатор чистоты водоёмов: там, где живёт выдра, вода чистая.',
|
||
fact: 'Выдра скользит по снегу и льду на брюхе, развивая скорость до 25 км/ч. Каждый день ей нужно съесть 15% своего веса.',
|
||
threats: ['Загрязнение водоёмов', 'Браконьерство', 'Вылов в рыболовные снасти'],
|
||
conservation: 'Охрана водоохранных зон. Запрет охоты. Очистка водоёмов.',
|
||
where_to_see: 'Реки по всей Беларуси, НП «Припятский»',
|
||
biomass: 9,
|
||
regions: ['brest','gomel','grodno','minsk','vitebsk','mogilev'],
|
||
trend: [{year:1990,count:2500},{year:2010,count:3000},{year:2024,count:3200}],
|
||
});
|
||
|
||
ids.bober = sp({
|
||
group: 'Млекопитающие', habitat: 'Река и озеро',
|
||
name_ru: 'Речной бобёр', name_be: 'Рачны бабёр', name_lat: 'Castor fiber',
|
||
category: 'LC', by_category: 'IV',
|
||
description: 'Крупнейший грызун Беларуси. Инженер экосистем: строит плотины, создаёт водоёмы, меняет ландшафт. Был истреблён к XIX веку и успешно реинтродуцирован. Сейчас численность в Беларуси — одна из крупнейших в Европе.',
|
||
fact: 'Бобёр — природный мелиоратор: его плотины повышают уровень грунтовых вод, создают новые биотопы для других видов.',
|
||
threats: ['Охота', 'Уничтожение прибрежной растительности'],
|
||
conservation: 'Регулирование охоты. Охрана пойменных лесов.',
|
||
where_to_see: 'Повсеместно у рек и каналов Беларуси',
|
||
biomass: 25,
|
||
regions: ['brest','gomel','grodno','minsk','vitebsk','mogilev'],
|
||
trend: [{year:1960,count:1000},{year:1990,count:20000},{year:2010,count:50000},{year:2024,count:60000}],
|
||
});
|
||
|
||
ids.zubatka = sp({
|
||
group: 'Млекопитающие', habitat: 'Широколиственный лес',
|
||
name_ru: 'Соня лесная', name_be: 'Лясная соня', name_lat: 'Dryomys nitedula',
|
||
category: 'VU', by_category: 'III',
|
||
description: 'Небольшой ночной грызун смешанных и лиственных лесов. Спит 7–8 месяцев в году — дольше всех млекопитающих Беларуси. Гнездо строит в дуплах или развилках ветвей на высоте 2–5 м.',
|
||
fact: 'Перед зимней спячкой соня увеличивает массу тела вдвое, накапливая жир. Температура тела во сне падает до 1°C.',
|
||
threats: ['Вырубка лиственных лесов', 'Снижение урожая орехов и желудей'],
|
||
conservation: 'Охрана старолесий. Вывешивание дуплянок.',
|
||
where_to_see: 'Беловежская пуща, Налибокская пуща',
|
||
biomass: 0.03,
|
||
regions: ['brest','grodno','minsk'],
|
||
});
|
||
|
||
ids.kosulya = sp({
|
||
group: 'Млекопитающие', habitat: 'Широколиственный лес',
|
||
name_ru: 'Косуля европейская', name_be: 'Еўрапейская казуля', name_lat: 'Capreolus capreolus',
|
||
category: 'LC', by_category: 'IV',
|
||
description: 'Самый распространённый олень Беларуси. Важнейший элемент пищевой цепи — основная добыча волка, рыси и лисы. Рожки самец сбрасывает ежегодно в ноябре. Летом держится одиночно, зимой образует небольшие группы.',
|
||
fact: 'Косуля — чемпион среди оленей по скорости: развивает до 60 км/ч. Рогатый самец защищает территорию площадью до 60 га.',
|
||
threats: ['Интенсивная охота', 'Браконьерство', 'Хищники'],
|
||
conservation: 'Регулирование охотничьей нагрузки. Мониторинг численности.',
|
||
where_to_see: 'Лесные массивы по всей Беларуси',
|
||
model: 'procedural', biomass: 25,
|
||
regions: ['brest','gomel','grodno','minsk','vitebsk','mogilev'],
|
||
trend: [{year:1990,count:80000},{year:2010,count:100000},{year:2024,count:110000}],
|
||
});
|
||
|
||
ids.volk = sp({
|
||
group: 'Млекопитающие', habitat: 'Хвойный лес',
|
||
name_ru: 'Волк', name_be: 'Воўк', name_lat: 'Canis lupus',
|
||
category: 'LC', by_category: 'IV',
|
||
description: 'Крупнейший хищник семейства псовых. Живёт стаями 5–12 особей с чёткой иерархией. Регулирует численность копытных, оздоровляя их популяции. В Беларуси отношение к волку противоречивое — он и символ дикой природы, и угроза для скота.',
|
||
fact: 'Волк за сутки способен пробежать до 70 км. Воя стаи достаточно, чтобы пометить территорию площадью в сотни км².',
|
||
threats: ['Истребление как вредителя', 'Фрагментация ареала'],
|
||
conservation: 'Мониторинг. Компенсации за ущерб скоту.',
|
||
where_to_see: 'Леса по всей Беларуси',
|
||
model: 'procedural', biomass: 40,
|
||
regions: ['brest','gomel','grodno','minsk','vitebsk','mogilev'],
|
||
trend: [{year:1990,count:1800},{year:2005,count:1500},{year:2015,count:1700},{year:2024,count:2000}],
|
||
});
|
||
|
||
/* ── РАСТЕНИЯ ────────────────────────────────────────────────────────────── */
|
||
|
||
ids.venerina = sp({
|
||
group: 'Растения', habitat: 'Широколиственный лес',
|
||
name_ru: 'Венерин башмачок настоящий', name_be: 'Венерын чаравічак', name_lat: 'Cypripedium calceolus',
|
||
category: 'EN', by_category: 'II',
|
||
description: 'Красивейшая дикая орхидея Беларуси. Цветок напоминает туфельку. Растёт в тенистых лиственных лесах. Живёт до 100 лет, но впервые цветёт только в 15–17 лет. Опыляется только мелкими пчёлами рода Andrena.',
|
||
fact: 'Венерин башмачок — самая долгоживущая травянистая орхидея. Одно растение в Германии было документально прослежено 100 лет на одном месте.',
|
||
threats: ['Незаконный сбор', 'Вырубка лесов', 'Уплотнение почвы', 'Зарастание кустарником'],
|
||
conservation: 'Охрана местонахождений. Культивирование в ботанических садах. Запрет сбора.',
|
||
where_to_see: 'Беловежская пуща (ур. Новый Двор), Налибокская пуща',
|
||
biomass: 0.05,
|
||
regions: ['brest','grodno','minsk','vitebsk'],
|
||
popdata: [[1990,5000,'КК РБ 1993'],[2005,3000,'КК РБ 2004'],[2015,2000,'КК РБ 2015'],[2024,1800,'Мониторинг 2024']],
|
||
trend: [{year:1990,count:5000},{year:2005,count:3000},{year:2015,count:2000},{year:2024,count:1800}],
|
||
});
|
||
|
||
ids.vodyanoy_oreh = sp({
|
||
group: 'Растения', habitat: 'Река и озеро',
|
||
name_ru: 'Водяной орех плавающий', name_be: 'Плывучы вадзяны арэх', name_lat: 'Trapa natans',
|
||
category: 'CR', by_category: 'I',
|
||
description: 'Реликт третичной флоры, живший на Земле ещё 100 миллионов лет назад. Плавающие листья образуют красивую розетку. Плоды съедобны, богаты крахмалом. Сохранился лишь в нескольких озёрах Полесья.',
|
||
fact: 'Водяной орех пережил динозавров. Его плоды с четырьмя «рогами» служили пищей людям ещё в каменном веке.',
|
||
threats: ['Загрязнение и эвтрофикация озёр', 'Колебания уровня воды', 'Конкуренция с другими водными растениями'],
|
||
conservation: 'Охрана озёр. Ограничение хозяйственной деятельности. Культивирование.',
|
||
where_to_see: 'Оз. Червоное (Брестская обл.), оз. Белое (Полесье)',
|
||
biomass: 0.02,
|
||
regions: ['brest','gomel'],
|
||
popdata: [[1990,15000,'КК РБ 1993'],[2005,8000,'КК РБ 2004'],[2015,4000,'КК РБ 2015'],[2024,2500,'Мониторинг 2024']],
|
||
trend: [{year:1990,count:15000},{year:2005,count:8000},{year:2015,count:4000},{year:2024,count:2500}],
|
||
});
|
||
|
||
ids.palchatokorenik = sp({
|
||
group: 'Растения', habitat: 'Болото',
|
||
name_ru: 'Пальчатокоренник мясокрасный', name_be: 'Мяснякраснаты пальчатакарэнік', name_lat: 'Dactylorhiza incarnata',
|
||
category: 'VU', by_category: 'III',
|
||
description: 'Болотная орхидея с плотным колосом розово-лиловых цветков. Растёт на низинных болотах и заболоченных лугах. Микоризный гриб необходим для прорастания семян — без него орхидея не может развиться.',
|
||
fact: 'Семена орхидей настолько малы (0,002 мм), что видны только под микроскопом. В одной коробочке содержится до 10 000 семян.',
|
||
threats: ['Осушение болот', 'Зарастание кустарником', 'Выпас скота'],
|
||
conservation: 'Охрана болотных массивов. Запрет мелиорации.',
|
||
where_to_see: 'Полесье, Налибокская пуща, Осиповичский район',
|
||
biomass: 0.03,
|
||
regions: ['brest','gomel','grodno','minsk'],
|
||
});
|
||
|
||
ids.molochai = sp({
|
||
group: 'Растения', habitat: 'Луг и поле',
|
||
name_ru: 'Прострел луговой', name_be: 'Сонца-трава', name_lat: 'Pulsatilla pratensis',
|
||
category: 'VU', by_category: 'III',
|
||
description: 'Один из первых весенних цветков. Тёмно-фиолетовые бокаловидные цветки появляются ещё при снеге. Покрыт шелковистыми волосками — защита от холода. Сильно сократился из-за сбора на букеты и распашки лугов.',
|
||
fact: 'Прострел — символ весны в Беларуси. Второе название «сон-трава» — легенда гласит, что заснувший рядом с ним видит вещие сны.',
|
||
threats: ['Сбор букетов', 'Распашка луговин', 'Сенокос до плодоношения'],
|
||
conservation: 'Запрет сбора. Охрана луговых заказников.',
|
||
where_to_see: 'Сосновые боры, остепнённые луга по всей Беларуси',
|
||
biomass: 0.01,
|
||
regions: ['brest','gomel','grodno','minsk','vitebsk','mogilev'],
|
||
});
|
||
|
||
ids.lobelia = sp({
|
||
group: 'Растения', habitat: 'Река и озеро',
|
||
name_ru: 'Лобелия Дортмана', name_be: 'Лобелія Дортмана', name_lat: 'Lobelia dortmanna',
|
||
category: 'EN', by_category: 'II',
|
||
description: 'Водное растение олиготрофных озёр. Растёт на песчаном дне на глубине 0,5–3 м. Цветонос возвышается над водой. Сверхчувствителен к загрязнению — индикатор кристально чистой воды.',
|
||
fact: 'Лобелия Дортмана поглощает CO₂ через корни из донных отложений, а не из воды — уникальный для растений способ.',
|
||
threats: ['Эвтрофикация озёр', 'Загрязнение воды', 'Рекреационная нагрузка'],
|
||
conservation: 'Охрана чистых озёр. Ограничение рекреации.',
|
||
where_to_see: 'Браславские озёра, озёра Нарочанской группы',
|
||
biomass: 0.01,
|
||
regions: ['vitebsk','minsk','grodno'],
|
||
});
|
||
|
||
ids.soldanella = sp({
|
||
group: 'Растения', habitat: 'Широколиственный лес',
|
||
name_ru: 'Лунник оживающий', name_be: 'Лунарыя ажываючая', name_lat: 'Lunaria rediviva',
|
||
category: 'VU', by_category: 'III',
|
||
description: 'Многолетнее растение тенистых влажных лесов. Серебристые эллиптические стручки используют для зимних букетов. Редчайшее в Беларуси — известно лишь несколько популяций.',
|
||
fact: 'Название «лунник» происходит от формы плодов — круглых, как луна. После высыхания они становятся прозрачными и серебристыми.',
|
||
threats: ['Сбор для флористики', 'Вырубка тенистых лесов'],
|
||
conservation: 'Запрет сбора. Охрана местонахождений.',
|
||
where_to_see: 'Налибокская пуща, Беловежская пуща',
|
||
biomass: 0.1,
|
||
regions: ['grodno','minsk','brest'],
|
||
});
|
||
|
||
ids.matik = sp({
|
||
group: 'Растения', habitat: 'Болото',
|
||
name_ru: 'Шейхцерия болотная', name_be: 'Балотная шэйхцэрыя', name_lat: 'Scheuchzeria palustris',
|
||
category: 'VU', by_category: 'III',
|
||
description: 'Реликтовое травянистое растение верховых болот. Растёт в сфагновых зарослях у мочажин. Индикатор ненарушенных болотных экосистем. При осушении болот исчезает первым.',
|
||
fact: 'Шейхцерия существует более 10 000 лет — с конца ледникового периода — практически не изменившись.',
|
||
threats: ['Осушение болот', 'Торфоразработки'],
|
||
conservation: 'Охрана верховых болот. Запрет торфоразработок.',
|
||
where_to_see: 'Ельнянский заказник, Освейское болото',
|
||
biomass: 0.01,
|
||
regions: ['vitebsk','minsk','gomel'],
|
||
});
|
||
|
||
/* ── НАСЕКОМЫЕ ────────────────────────────────────────────────────────────── */
|
||
|
||
ids.makhаon = sp({
|
||
group: 'Насекомые', habitat: 'Луг и поле',
|
||
name_ru: 'Махаон', name_be: 'Махаон', name_lat: 'Papilio machaon',
|
||
category: 'NT', by_category: 'IV',
|
||
description: 'Одна из крупнейших и красивейших бабочек Беларуси. Размах крыльев до 95 мм. Жёлтые крылья с чёрным рисунком и синей каймой. Гусеница поедает листья зонтичных растений. Стал редок из-за распашки лугов с дикими зонтичными.',
|
||
fact: 'Хвостики-отростки на задних крыльях отвлекают хищников — птицы атакуют «ненастоящую голову».',
|
||
threats: ['Распашка лугов с зонтичными растениями', 'Применение пестицидов', 'Сбор коллекционерами'],
|
||
conservation: 'Сохранение лугов с дикими зонтичными. Запрет отлова.',
|
||
where_to_see: 'Луга и опушки по всей Беларуси, Полесье',
|
||
model: 'procedural', biomass: 0.002,
|
||
regions: ['brest','gomel','grodno','minsk','vitebsk','mogilev'],
|
||
trend: [{year:1990,count:100000},{year:2010,count:50000},{year:2024,count:30000}],
|
||
});
|
||
|
||
ids.podolik = sp({
|
||
group: 'Насекомые', habitat: 'Широколиственный лес',
|
||
name_ru: 'Жук-олень', name_be: 'Жук-алень', name_lat: 'Lucanus cervus',
|
||
category: 'VU', by_category: 'II',
|
||
description: 'Крупнейший жук Беларуси. Самцы достигают 9 см. «Рога» — увеличенные жвала, используемые в турнирных боях. Личинка развивается в мёртвой древесине дуба 5–8 лет. Исчезает вместе со старыми дубравами.',
|
||
fact: 'Жук-олень умеет летать, несмотря на тяжёлую «броню». Взрослый жук не ест — живёт всего 1–2 месяца за счёт жировых запасов.',
|
||
threats: ['Вырубка старых дубрав', 'Уборка мёртвой древесины', 'Декоративный сбор'],
|
||
conservation: 'Сохранение старовозрастных дубрав. Оставление валежника.',
|
||
where_to_see: 'Беловежская пуща, Налибокская пуща',
|
||
model: 'procedural', biomass: 0.008,
|
||
regions: ['brest','grodno','minsk'],
|
||
});
|
||
|
||
ids.apollon = sp({
|
||
group: 'Насекомые', habitat: 'Луг и поле',
|
||
name_ru: 'Аполлон', name_be: 'Апалон', name_lat: 'Parnassius apollo',
|
||
category: 'EN', by_category: 'I',
|
||
description: 'Крупная дневная бабочка с полупрозрачными белыми крыльями и красными глазками. Считается одним из красивейших насекомых Европы. В Беларуси сохранились единичные изолированные популяции. Гусеница питается очитком.',
|
||
fact: 'Аполлон — первая бабочка, включённая в Конвенцию CITES (запрет международной торговли). Его коллекционируют вопреки всем запретам.',
|
||
threats: ['Зарастание каменистых склонов кустарником', 'Коллекционирование', 'Применение пестицидов'],
|
||
conservation: 'Строгая охрана популяций. Борьба с зарастанием склонов.',
|
||
where_to_see: 'Окрестности Гродно (единственное местонахождение в РБ)',
|
||
biomass: 0.003,
|
||
regions: ['grodno'],
|
||
popdata: [[2000,500,'КК РБ 2004'],[2015,300,'КК РБ 2015'],[2024,200,'Мониторинг 2024']],
|
||
trend: [{year:2000,count:500},{year:2015,count:300},{year:2024,count:200}],
|
||
});
|
||
|
||
ids.bogomol = sp({
|
||
group: 'Насекомые', habitat: 'Луг и поле',
|
||
name_ru: 'Богомол обыкновенный', name_be: 'Звычайны багамол', name_lat: 'Mantis religiosa',
|
||
category: 'EN', by_category: 'II',
|
||
description: 'Самый известный хищный кузнечик. Передние ноги — ловчий аппарат, реагирующий быстрее, чем успевает моргнуть человек. Самка после спаривания поедает самца. В Беларуси — на северной границе ареала.',
|
||
fact: 'Богомол — единственное насекомое, способное поворачивать голову на 180°. Реакция захвата добычи занимает 0,05 секунды.',
|
||
threats: ['Применение пестицидов', 'Распашка сухих лугов', 'Изменение климата'],
|
||
conservation: 'Охрана сухих травянистых местообитаний.',
|
||
where_to_see: 'Южная Беларусь — Брестская, Гомельская обл.',
|
||
biomass: 0.004,
|
||
regions: ['brest','gomel'],
|
||
});
|
||
|
||
ids.stag_beetle2 = sp({
|
||
group: 'Насекомые', habitat: 'Широколиственный лес',
|
||
name_ru: 'Усач мускусный', name_be: 'Мускусны вусач', name_lat: 'Aromia moschata',
|
||
category: 'VU', by_category: 'III',
|
||
description: 'Ярко-зелёный жук с металлическим блеском. Издаёт сильный запах мускуса, слышный за несколько метров. Личинки развиваются в старых ивах. Встречается вдоль рек с ивняком.',
|
||
fact: 'Мускусный усач — один из немногих жуков, использующих химическую сигнализацию для общения с партнёрами.',
|
||
threats: ['Обрезка и уборка старых ив', 'Осушение пойм'],
|
||
conservation: 'Сохранение старых ив вдоль рек.',
|
||
where_to_see: 'Поймы рек Полесья, долина Немана',
|
||
biomass: 0.004,
|
||
regions: ['brest','gomel','grodno','minsk'],
|
||
});
|
||
|
||
/* ── РЫБЫ ─────────────────────────────────────────────────────────────────── */
|
||
|
||
ids.sterlyadj = sp({
|
||
group: 'Рыбы', habitat: 'Река и озеро',
|
||
name_ru: 'Стерлядь', name_be: 'Асётр-стэрлядзь', name_lat: 'Acipenser ruthenus',
|
||
category: 'EN', by_category: 'II',
|
||
description: 'Самый мелкий осетр. Реликт доледникового периода — осетры появились 250 миллионов лет назад. В Беларуси исчезала в XX веке и восстанавливается искусственным зарыблением. Ценнейшая промысловая рыба.',
|
||
fact: 'Осетры — живые ископаемые. Их форма тела не менялась 200 миллионов лет. Стерлядь доживает до 30 лет.',
|
||
threats: ['Браконьерство', 'Строительство плотин', 'Загрязнение рек', 'Изъятие из русел гравия'],
|
||
conservation: 'Искусственное воспроизводство. Рыборазводные заводы. Запрет вылова.',
|
||
where_to_see: 'Р. Днепр, р. Припять, р. Сож (редко)',
|
||
biomass: 0.8,
|
||
regions: ['gomel','mogilev','brest'],
|
||
popdata: [[1990,100,'КК РБ 1993'],[2010,500,'после зарыбления'],[2024,1500,'Мониторинг 2024']],
|
||
trend: [{year:1990,count:100},{year:2010,count:500},{year:2024,count:1500}],
|
||
});
|
||
|
||
ids.minog = sp({
|
||
group: 'Рыбы', habitat: 'Река и озеро',
|
||
name_ru: 'Ручьевая минога', name_be: 'Ручаёвая мінога', name_lat: 'Lampetra planeri',
|
||
category: 'VU', by_category: 'III',
|
||
description: 'Древнейший позвоночный — миноги появились 360 миллионов лет назад, ещё до динозавров. Не имеет челюстей. Личинка (амоцет) живёт в иле 3–7 лет с закрытыми глазами. Взрослая минога не питается и гибнет после нереста.',
|
||
fact: 'Ручьевая минога — «живое ископаемое», практически не изменившееся за 360 миллионов лет. Её называют самым примитивным позвоночным.',
|
||
threats: ['Загрязнение малых рек', 'Заиление нерестилищ', 'Мелиорация'],
|
||
conservation: 'Охрана малых рек. Ограничение мелиорации.',
|
||
where_to_see: 'Чистые малые реки Витебской, Гродненской областей',
|
||
biomass: 0.02,
|
||
regions: ['vitebsk','grodno','minsk','mogilev'],
|
||
});
|
||
|
||
ids.usatch = sp({
|
||
group: 'Рыбы', habitat: 'Река и озеро',
|
||
name_ru: 'Усач обыкновенный', name_be: 'Марэна', name_lat: 'Barbus barbus',
|
||
category: 'VU', by_category: 'III',
|
||
description: 'Крупная реофильная рыба быстрых рек. Достигает 90 см. Ищет пищу на дне с помощью чувствительных усиков. Нерестится на каменистых перекатах — именно их исчезновение главная угроза.',
|
||
fact: 'Икра усача ядовита для теплокровных — содержит ихтиотоксин. Местные рыбаки знали об этом и никогда её не ели.',
|
||
threats: ['Добыча гравия', 'Строительство плотин', 'Загрязнение'],
|
||
conservation: 'Сохранение каменистых перекатов. Запрет добычи гравия.',
|
||
where_to_see: 'Р. Западный Буг, р. Нёман',
|
||
biomass: 1.5,
|
||
regions: ['brest','grodno'],
|
||
});
|
||
|
||
ids.rylets = sp({
|
||
group: 'Рыбы', habitat: 'Река и озеро',
|
||
name_ru: 'Подуст обыкновенный', name_be: 'Падуст', name_lat: 'Chondrostoma nasus',
|
||
category: 'EN', by_category: 'II',
|
||
description: 'Стайная рыба горных и предгорных рек. В Беларуси — на восточной границе ареала. Питается водорослями и органикой, соскребая их нижнечелюстным роговым чехликом со дна.',
|
||
fact: 'Подуст чистит дно реки, поедая водоросли — выполняет роль «пылесоса» экосистемы.',
|
||
threats: ['Загрязнение', 'Уничтожение нерестовых субстратов', 'Строительство плотин'],
|
||
conservation: 'Охрана нерестилищ. Запрет строительства.',
|
||
where_to_see: 'Р. Западный Буг (редко)',
|
||
biomass: 0.3,
|
||
regions: ['brest'],
|
||
});
|
||
|
||
/* ── РЕПТИЛИИ И АМФИБИИ ──────────────────────────────────────────────────── */
|
||
|
||
ids.cherepaha = sp({
|
||
group: 'Рептилии и амфибии', habitat: 'Болото',
|
||
name_ru: 'Черепаха болотная', name_be: 'Балотная чарапаха', name_lat: 'Emys orbicularis',
|
||
category: 'VU', by_category: 'II',
|
||
description: 'Единственная дикая черепаха Беларуси. Греется на берегах заболоченных водоёмов. При опасности мгновенно ныряет. Живёт до 100 лет. Откладывает яйца в прогретую почву. Самая северная черепаха Европы.',
|
||
fact: 'Черепаха болотная определяет пол потомства температурой гнезда: при +28°C рождаются самки, при +26°C — самцы.',
|
||
threats: ['Осушение болот', 'Уничтожение берегов', 'Гибель на дорогах'],
|
||
conservation: 'Охрана водно-болотных угодий. Туннели под дорогами.',
|
||
where_to_see: 'Полесье (Брестская, Гомельская обл.)',
|
||
model: 'procedural', biomass: 0.5,
|
||
regions: ['brest','gomel','grodno'],
|
||
popdata: [[1990,10000,'КК РБ 1993'],[2005,7000,'КК РБ 2004'],[2015,5000,'КК РБ 2015'],[2024,4000,'Мониторинг 2024']],
|
||
trend: [{year:1990,count:10000},{year:2005,count:7000},{year:2015,count:5000},{year:2024,count:4000}],
|
||
});
|
||
|
||
ids.medyanka = sp({
|
||
group: 'Рептилии и амфибии', habitat: 'Широколиственный лес',
|
||
name_ru: 'Медянка', name_be: 'Медзянка', name_lat: 'Coronella austriaca',
|
||
category: 'VU', by_category: 'III',
|
||
description: 'Небольшая безвредная змея. Часто принимается за гадюку и уничтожается. Специализируется на ящерицах — конкурирует с гадюкой за пищу, но не ядовита. Гладкая чешуя с медным блеском.',
|
||
fact: 'Медянка сжимает добычу как удав — потому что ящерицы не боятся яда. Укус человека абсолютно безвреден.',
|
||
threats: ['Уничтожение из-за путаницы с гадюкой', 'Уничтожение сухих опушек'],
|
||
conservation: 'Просветительская работа. Охрана сухих опушек и вырубок.',
|
||
where_to_see: 'Сухие сосновые леса Полесья',
|
||
biomass: 0.05,
|
||
regions: ['brest','gomel','grodno','minsk'],
|
||
});
|
||
|
||
ids.trit = sp({
|
||
group: 'Рептилии и амфибии', habitat: 'Болото',
|
||
name_ru: 'Тритон гребенчатый', name_be: 'Грэбеньчасты трытон', name_lat: 'Triturus cristatus',
|
||
category: 'NT', by_category: 'III',
|
||
description: 'Крупнейший тритон Беларуси. В брачный период самец развивает высокий зубчатый гребень от затылка до хвоста. Днём прячется в укрытиях, ночью охотится. Живёт у лесных водоёмов.',
|
||
fact: 'Гребень самца — не для плавания, а для привлечения самок. В воде он играет роль «хвоста павлина».',
|
||
threats: ['Мелиорация', 'Гибель на дорогах', 'Инвазивные рыбы в водоёмах'],
|
||
conservation: 'Охрана прудов и болот. Ограничение вселения рыбы.',
|
||
where_to_see: 'Лесные пруды по всей Беларуси',
|
||
biomass: 0.02,
|
||
regions: ['brest','gomel','grodno','minsk','vitebsk','mogilev'],
|
||
});
|
||
|
||
/* ── ГРИБЫ ────────────────────────────────────────────────────────────────── */
|
||
|
||
ids.truffe = sp({
|
||
group: 'Грибы', habitat: 'Широколиственный лес',
|
||
name_ru: 'Трюфель летний', name_be: 'Летні трувель', name_lat: 'Tuber aestivum',
|
||
category: 'EN', by_category: 'I',
|
||
description: 'Подземный гриб — деликатес с неповторимым ароматом. Растёт в симбиозе с корнями дуба и бука. Плодовое тело полностью под землёй. В Беларуси — редчайший вид, известны единичные находки.',
|
||
fact: 'Аромат трюфеля обусловлен андростенолом — феромоном, похожим на половой гормон кабана. Именно поэтому их традиционно ищут со свиньями.',
|
||
threats: ['Вырубка дубрав', 'Уплотнение почвы', 'Сбор до созревания спор'],
|
||
conservation: 'Охрана старых дубрав. Запрет сбора.',
|
||
where_to_see: 'Беловежская пуща (единичные находки)',
|
||
biomass: 0.1,
|
||
regions: ['brest'],
|
||
});
|
||
|
||
ids.mukhomor = sp({
|
||
group: 'Грибы', habitat: 'Хвойный лес',
|
||
name_ru: 'Решёточник красный', name_be: 'Чырвоная кратчатка', name_lat: 'Clathrus ruber',
|
||
category: 'CR', by_category: 'I',
|
||
description: 'Невероятный гриб — красная ажурная решётка. Вылупляется из белого яйца за несколько часов. Тухлый запах привлекает мух, распространяющих споры. Средиземноморский вид, в Беларуси единственная находка в 2019 г.',
|
||
fact: 'Решёточник — один из самых необычных грибов мира. Его рост занимает всего 4–6 часов. Живёт 1–2 дня.',
|
||
threats: ['Недостаточность тепла', 'Уничтожение при сборе'],
|
||
conservation: 'Строгая охрана единственного местонахождения.',
|
||
where_to_see: 'Гродненский район (единственная находка)',
|
||
biomass: 0.05,
|
||
regions: ['grodno'],
|
||
});
|
||
|
||
ids.sparassis = sp({
|
||
group: 'Грибы', habitat: 'Хвойный лес',
|
||
name_ru: 'Спарасис курчавый (грибная капуста)', name_be: 'Кучаравы спарасіс', name_lat: 'Sparassis crispa',
|
||
category: 'VU', by_category: 'III',
|
||
description: 'Гриб, похожий на кочан цветной капусты кремового цвета. Диаметр до 50 см, вес до 5 кг. Растёт у оснований старых сосен. Съедобен и очень вкусен. Обладает противоопухолевыми свойствами.',
|
||
fact: 'Спарасис содержит β-1,3-глюкан — вещество, доказанно усиливающее иммунитет и применяемое в японской медицине.',
|
||
threats: ['Вырубка старых сосновых лесов', 'Сбор до созревания спор'],
|
||
conservation: 'Сохранение старых сосняков. Ограничение сбора.',
|
||
where_to_see: 'Старые сосняки Беларуси',
|
||
biomass: 1.5,
|
||
regions: ['brest','gomel','grodno','minsk','vitebsk','mogilev'],
|
||
});
|
||
|
||
/* ── МХИ И ЛИШАЙНИКИ ─────────────────────────────────────────────────────── */
|
||
|
||
ids.lobaria = sp({
|
||
group: 'Мхи и лишайники', habitat: 'Широколиственный лес',
|
||
name_ru: 'Лобария лёгочная', name_be: 'Лёгачная лобарыя', name_lat: 'Lobaria pulmonaria',
|
||
category: 'VU', by_category: 'III',
|
||
description: 'Крупный лишайник — симбиоз гриба, водоросли и цианобактерии. Таллом похож на лёгочную ткань. Растёт только в старых нетронутых лесах с постоянной влажностью. Индикатор экологической ценности леса.',
|
||
fact: 'Лобария лёгочная фиксирует атмосферный азот. Раньше её применяли при болезнях лёгких — отсюда и название.',
|
||
threats: ['Вырубка старолесий', 'Загрязнение воздуха (SO₂)', 'Изменение микроклимата'],
|
||
conservation: 'Охрана старовозрастных лесов.',
|
||
where_to_see: 'Беловежская пуща, Налибокская пуща',
|
||
biomass: 0.05,
|
||
regions: ['brest','grodno'],
|
||
});
|
||
|
||
ids.kladon = sp({
|
||
group: 'Мхи и лишайники', habitat: 'Хвойный лес',
|
||
name_ru: 'Кладония звёздчатая', name_be: 'Зорчатая кладонія', name_lat: 'Cladonia stellaris',
|
||
category: 'VU', by_category: 'III',
|
||
description: 'Напочвенный кустистый лишайник, образующий белые кочки в сосновых борах. Один из компонентов оленьего мха — важный корм для оленей зимой. Растёт крайне медленно — 1–3 мм в год.',
|
||
fact: 'Ковёр из кладонии в сосняке может быть возрастом 200–300 лет. Протяжённость "колонии" до 10 м.',
|
||
threats: ['Пожары', 'Вытаптывание', 'Загрязнение воздуха'],
|
||
conservation: 'Охрана сухих сосняков. Противопожарные меры.',
|
||
where_to_see: 'Сухие боры Витебской, Минской, Гомельской областей',
|
||
biomass: 0.1,
|
||
regions: ['vitebsk','minsk','gomel','brest'],
|
||
});
|
||
|
||
db.exec('COMMIT');
|
||
console.log(`✓ Виды засеяны (${Object.keys(ids).length} видов)`);
|
||
} catch (e) {
|
||
db.exec('ROLLBACK');
|
||
console.error('Ошибка при вставке видов:', e.message);
|
||
process.exit(1);
|
||
}
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════════
|
||
ПИЩЕВАЯ СЕТЬ
|
||
══════════════════════════════════════════════════════════════════════════ */
|
||
const insWeb = db.prepare('INSERT OR IGNORE INTO rb_food_web (predator_id, prey_id, strength) VALUES (?,?,?)');
|
||
|
||
db.exec('BEGIN');
|
||
const web = [
|
||
// Орлан-белохвост охотится на рыб, водоплавающих птиц
|
||
[ids.orlan, ids.sterlyadj, 0.6],
|
||
[ids.orlan, ids.usatch, 0.3],
|
||
[ids.orlan, ids.krasnozobaya_kazarka, 0.1],
|
||
// Скопа — только рыба
|
||
[ids.skopa, ids.sterlyadj, 0.7],
|
||
[ids.skopa, ids.usatch, 0.3],
|
||
[ids.skopa, ids.rylets, 0.2],
|
||
// Змееяд — рептилии
|
||
[ids.zmeeyed, ids.medyanka, 0.7],
|
||
[ids.zmeeyed, ids.cherepaha, 0.1],
|
||
// Филин
|
||
[ids.filin, ids.kosulya, 0.2],
|
||
[ids.filin, ids.bober, 0.1],
|
||
[ids.filin, ids.vydra, 0.1],
|
||
// Большой подорлик
|
||
[ids.zhuravl_seryi2, ids.trit, 0.5],
|
||
[ids.zhuravl_seryi2, ids.cherepaha, 0.3],
|
||
[ids.zhuravl_seryi2, ids.minog, 0.2],
|
||
// Рысь — косули, заяц, бобёр
|
||
[ids.rys, ids.kosulya, 0.8],
|
||
[ids.rys, ids.bober, 0.1],
|
||
[ids.rys, ids.zubatka, 0.05],
|
||
// Волк
|
||
[ids.volk, ids.kosulya, 0.7],
|
||
[ids.volk, ids.zubr, 0.1],
|
||
[ids.volk, ids.bober, 0.2],
|
||
// Выдра — рыба, лягушки
|
||
[ids.vydra, ids.sterlyadj, 0.4],
|
||
[ids.vydra, ids.minog, 0.3],
|
||
[ids.vydra, ids.usatch, 0.3],
|
||
// Норка — рыба, раки
|
||
[ids.norka, ids.rylets, 0.4],
|
||
[ids.norka, ids.minog, 0.3],
|
||
[ids.norka, ids.trit, 0.3],
|
||
// Бурый медведь — всеяден
|
||
[ids.medved, ids.bober, 0.15],
|
||
[ids.medved, ids.lobelia, 0.2],
|
||
// Журавль — насекомые, лягушки, зерно
|
||
[ids.zhuravl, ids.trit, 0.3],
|
||
[ids.zhuravl, ids.bogomol, 0.2],
|
||
// Черный аист — рыба, лягушки
|
||
[ids.chorny_aist, ids.minog, 0.4],
|
||
[ids.chorny_aist, ids.sterlyadj, 0.2],
|
||
[ids.chorny_aist, ids.trit, 0.4],
|
||
// Коростель — насекомые
|
||
[ids.dergach, ids.makhаon, 0.1],
|
||
[ids.dergach, ids.bogomol, 0.1],
|
||
// Жук-олень — мёртвая дубовая древесина
|
||
[ids.podolik, ids.lobaria, 0.1],
|
||
];
|
||
web.forEach(([p, q, s]) => insWeb.run(p, q, s));
|
||
db.exec('COMMIT');
|
||
console.log(`✓ Пищевая сеть: ${web.length} связей`);
|
||
|
||
/* ══════════════════════════════════════════════════════════════════════════
|
||
КВЕСТЫ
|
||
══════════════════════════════════════════════════════════════════════════ */
|
||
const insQ = db.prepare('INSERT INTO rb_quests (title, description, species_ids, xp_reward, badge_slug) VALUES (?,?,?,?,?)');
|
||
|
||
[
|
||
[
|
||
'Спасти зубра',
|
||
'Узнайте историю зубра — от истребления до триумфального возвращения. Пройдите 5 этапов: история вида, генетика, пищевая сеть, ареал и современная охрана.',
|
||
JSON.stringify([ids.zubr, ids.kosulya, ids.volk, ids.rys]),
|
||
200, 'quest_zubr'
|
||
],
|
||
[
|
||
'Путь чёрного аиста',
|
||
'Проследите миграцию чёрного аиста из белорусских болот в Африку. Изучите биомы, угрозы на маршруте и меры охраны.',
|
||
JSON.stringify([ids.chorny_aist, ids.zhuravl, ids.cherepaha, ids.trit]),
|
||
180, 'quest_black_stork'
|
||
],
|
||
[
|
||
'Река живёт',
|
||
'Стерлядь — символ здоровья белорусских рек. Узнайте, почему исчезают осетры и как восстановить их популяцию.',
|
||
JSON.stringify([ids.sterlyadj, ids.minog, ids.usatch, ids.vydra, ids.norka]),
|
||
160, 'quest_river'
|
||
],
|
||
[
|
||
'Последний лес',
|
||
'Беловежская пуща — последний первобытный лес Европы. Исследуйте её обитателей и поймите, почему этот лес уникален.',
|
||
JSON.stringify([ids.zubr, ids.rys, ids.filin, ids.venerina, ids.podolik, ids.truffe]),
|
||
250, 'quest_forest'
|
||
],
|
||
].forEach(args => insQ.run(...args));
|
||
|
||
console.log('✓ Квесты');
|
||
console.log('\n✅ seed-red-book.js завершён успешно!');
|
||
console.log(` Видов: ${Object.keys(ids).length}`);
|
||
console.log(' Запустите: node src/db/migrate.js && node src/db/seed-red-book.js');
|