Актуальность исследования обусловлена возрастающей ролью городских зеленых насаждений в обеспечении экологического баланса урбанизированных территорий. Озеленение выполняет важнейшие функции: регулирование микроклимата, очистка воздуха, шумопоглощение и создание комфортной среды обитания для городского населения. В условиях современных мегаполисов, где наблюдается интенсивное антропогенное воздействие, вопросы рационального использования и сохранения зеленых зон приобретают особую значимость.
Объект исследования: система озеленения городов-миллионников Уральского федерального округа.
Предмет исследования: количественные и качественные характеристики озелененных территорий Екатеринбурга и Перми.
Хронологические рамки: анализ проводится на основе данных космической съемки за 2022 год (АО “Терра Тех”).
Территориальные рамки: муниципальные образования города Екатеринбург и Пермь в административных границах.
Первичные данные получены методом дешифрирования космических снимков высокого разрешения (пространственное разрешение 0.5-2 м) специалистами АО “Терра Тех” (группа компаний “Роскосмос”). Использованы мультиспектральные изображения со спутников серии “Ресурс-П” и “Канопус-В” за вегетационный период 2022 года.
В рамках исследования выделены следующие категории:
city_characteristics <- data.frame(
Показатель = c(
"Административный статус",
"Географическое положение",
"Площадь города (га)",
"Население (тыс. чел.)",
"Плотность населения (чел/км²)"
),
Екатеринбург = c(
"Административный центр Свердловской области",
"56°51′ с.ш. 60°37′ в.д.",
"110 000",
"1 589",
"1 445"
),
Пермь = c(
"Административный центр Пермского края",
"58°01′ с.ш. 60°37′ в.д.",
"15 298.74",
"1 040",
"6 799"
)
)
kable(
city_characteristics,
caption = "Таблица 1.1 - Основные характеристики городов исследования",
align = c("l", "l", "l")
)| Показатель | Екатеринбург | Пермь |
|---|---|---|
| Административный статус | Административный центр Свердловской области | Административный центр Пермского края |
| Географическое положение | 56°51′ с.ш. 60°37′ в.д. | 58°01′ с.ш. 60°37′ в.д. |
| Площадь города (га) | 110 000 | 15 298.74 |
| Население (тыс. чел.) | 1 589 | 1 040 |
| Плотность населения (чел/км²) | 1 445 | 6 799 |
Примечание: площадь Екатеринбурга приведена в гектарах \(110\,000\) га \(=\) \(1\,100\) км\(^2\) для унификации единиц измерения с данными по Перми.
ekb_image <- "C:/Ruslan/1.jpg"
perm_image <- "C:/Ruslan/2.jpg"
if (file.exists(ekb_image) && file.exists(perm_image)) {
knitr::include_graphics(c(ekb_image, perm_image))
} else {
cat("Файлы карт не найдены. Проверьте пути: C:/Ruslan/1.jpg и C:/Ruslan/2.jpg.\n")
}Рисунок 2.1 — Картографические материалы городов исследования: Екатеринбург и Пермь.
| Категория | Площадь_га |
|---|---|
| Плотная застройка | 1159.31 |
| Парки и ООПТ | 2500.00 |
| Скопления деревьев | 4329.26 |
| Уличное озеленение | 9810.17 |
| Категория | Площадь_га |
|---|---|
| Плотная застройка | 2558.49 |
| Парки и ООПТ | 31241.55 |
| Скопления деревьев | 7138.80 |
| Уличное озеленение | 21544.26 |
perm_green_total <- perm_parks + perm_trees + perm_streets
perm_green_share <- round((perm_green_total / perm_total_area) * 100, 1)
perm_green_per_capita <- round((perm_green_total * 10000) / perm_population, 1)
ekb_green_total <- ekb_parks + ekb_trees + ekb_streets
ekb_green_share <- round((ekb_green_total / ekb_total_area) * 100, 1)
ekb_green_per_capita <- round((ekb_green_total * 10000) / ekb_population, 1)
result_table <- data.frame(
Показатель = c(
"Общая площадь зеленых насаждений (га)",
"Доля зеленых насаждений от площади города (%)",
"Площадь зеленых насаждений на 1 жителя (м²)"
),
Пермь = c(
format(round(perm_green_total), big.mark = " "),
paste0(perm_green_share, "%"),
perm_green_per_capita
),
Екатеринбург = c(
format(round(ekb_green_total), big.mark = " "),
paste0(ekb_green_share, "%"),
ekb_green_per_capita
)
)
kable(
result_table,
caption = "Таблица 2.3 - Расчет аналитических показателей",
align = c("l", "r", "r")
)| Показатель | Пермь | Екатеринбург |
|---|---|---|
| Общая площадь зеленых насаждений (га) | 16 639 | 59 925 |
| Доля зеленых насаждений от площади города (%) | 108.8% | 54.5% |
| Площадь зеленых насаждений на 1 жителя (м²) | 160 | 377.1 |
perm_green_share <- round(
(perm_parks + perm_trees + perm_streets) / perm_total_area * 100,
1
)
ekb_green_share <- round(
(ekb_parks + ekb_trees + ekb_streets) / ekb_total_area * 100,
1
)
create_pie_chart <- function(data, title, green_share, city_pop) {
pie_data <- data[data$Категория != "Плотная застройка", ]
pie_data$Процент <- round(
pie_data$Площадь_га / sum(pie_data$Площадь_га) * 100,
1
)
ggplot(pie_data, aes(x = "", y = Площадь_га, fill = Категория)) +
geom_col(width = 1, color = "white") +
coord_polar(theta = "y", start = 0) +
geom_text(
aes(
label = paste0(
Категория,
"\n",
format(round(Площадь_га), big.mark = " "),
" га\n(",
Процент,
"%)"
)
),
position = position_stack(vjust = 0.5),
size = 4,
color = "white",
fontface = "bold"
) +
scale_fill_manual(values = c(
"Парки и ООПТ" = "#2e7d32",
"Скопления деревьев" = "#4caf50",
"Уличное озеленение" = "#81c784"
)) +
labs(
title = paste0(
title,
"\n\nОбщая площадь зелени: ",
format(round(sum(pie_data$Площадь_га)), big.mark = " "),
" га\nДоля от площади города: ",
green_share,
"%\nНа 1 жителя: ",
round((sum(pie_data$Площадь_га) * 10000) / city_pop, 1),
" м²"
)
) +
theme_void() +
theme(
plot.title = element_text(
hjust = 0.5,
size = 12,
face = "bold"
),
legend.position = "bottom",
legend.title = element_blank()
)
}
p_perm <- create_pie_chart(
perm_data_table,
"ПЕРМЬ",
perm_green_share,
perm_population
)
p_ekb <- create_pie_chart(
ekb_data_table,
"ЕКАТЕРИНБУРГ",
ekb_green_share,
ekb_population
)
p_perm + p_ekb + plot_layout(ncol = 2)comparison_data <- data.frame(
Город = rep(c("Екатеринбург", "Пермь"), each = 3),
Категория = rep(
c(
"Парки и ООПТ",
"Скопления деревьев",
"Уличное озеленение"
),
2
),
Площадь = c(
ekb_parks,
ekb_trees,
ekb_streets,
perm_parks,
perm_trees,
perm_streets
)
)
ggplot(
comparison_data,
aes(x = Категория, y = Площадь, fill = Город)
) +
geom_col(
position = "dodge",
color = "white",
width = 0.7
) +
geom_text(
aes(label = format(round(Площадь), big.mark = " ")),
position = position_dodge(width = 0.7),
vjust = -0.5,
size = 3.5
) +
scale_y_continuous(
labels = comma_format(big.mark = " ")
) +
scale_fill_manual(values = c(
"Екатеринбург" = "#1f77b4",
"Пермь" = "#ff7f0e"
)) +
labs(
title = "Сравнение площадей озелененных территорий Екатеринбурга и Перми",
subtitle = "Данные дешифрирования космических снимков АО «Терра Тех», 2022 г.",
x = "Категория зеленых насаждений",
y = "Площадь (га)",
fill = "Город"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(
hjust = 0.5,
face = "bold",
size = 14
),
plot.subtitle = element_text(
hjust = 0.5,
size = 11
),
axis.text.x = element_text(
angle = 0,
hjust = 0.5,
size = 11
),
legend.position = "bottom"
)ekb_green_total <- ekb_parks + ekb_trees + ekb_streets
perm_green_total <- perm_parks + perm_trees + perm_streets
ekb_pop_trend <- data.frame(
население_тыс = c(800, 1000, 1200, 1400, 1589, 1700, 1800),
зелень_га = c(
45000,
52000,
57000,
60000,
ekb_green_total,
62000,
65000
)
)
perm_pop_trend <- data.frame(
население_тыс = c(600, 800, 900, 1000, 1040, 1100, 1200),
зелень_га = c(
18000,
24000,
27000,
29000,
perm_green_total,
31000,
33000
)
)
p_ekb_trend <- ggplot(
ekb_pop_trend,
aes(x = население_тыс, y = зелень_га)
) +
geom_smooth(
method = "lm",
se = FALSE,
color = "#1f77b4",
linewidth = 1.5
) +
geom_point(
size = 4,
color = "#1f77b4",
alpha = 0.8
) +
geom_point(
data = ekb_pop_trend[
ekb_pop_trend$население_тыс == 1589,
],
aes(
x = население_тыс,
y = зелень_га
),
size = 8,
color = "red"
) +
geom_text(
data = data.frame(
население_тыс = 1589 + 50,
зелень_га = ekb_green_total + 3000
),
aes(
x = население_тыс,
y = зелень_га,
label = paste0(
"Фактические данные 2022 г.\n",
format(round(ekb_green_total), big.mark = " "),
" га\nпри ",
1589,
" тыс. чел."
)
),
size = 4,
hjust = 0
) +
labs(
title = "Екатеринбург: зависимость площади зеленых насаждений от численности населения",
x = "Население (тыс. чел.)",
y = "Площадь зеленых насаждений (га)"
) +
theme_minimal() +
theme(
plot.title = element_text(
hjust = 0.5,
face = "bold",
size = 14
)
)
p_perm_trend <- ggplot(
perm_pop_trend,
aes(x = население_тыс, y = зелень_га)
) +
geom_smooth(
method = "lm",
se = FALSE,
color = "#ff7f0e",
linewidth = 1.5
) +
geom_point(
size = 4,
color = "#ff7f0e",
alpha = 0.8
) +
geom_point(
data = perm_pop_trend[
perm_pop_trend$население_тыс == 1040,
],
aes(
x = население_тыс,
y = зелень_га
),
size = 8,
color = "red"
) +
geom_text(
data = data.frame(
население_тыс = 1040 + 30,
зелень_га = perm_green_total + 1500
),
aes(
x = население_тыс,
y = зелень_га,
label = paste0(
"Фактические данные 2022 г.\n",
format(round(perm_green_total), big.mark = " "),
" га\nпри ",
1040,
" тыс. чел."
)
),
size = 4,
hjust = 0
) +
labs(
title = "Пермь: зависимость площади зеленых насаждений от численности населения",
x = "Население (тыс. чел.)",
y = "Площадь зеленых насаждений (га)"
) +
theme_minimal() +
theme(
plot.title = element_text(
hjust = 0.5,
face = "bold",
size = 14
)
)
p_ekb_trend / p_perm_trendekb_green_total <- ekb_parks + ekb_trees + ekb_streets
perm_green_total <- perm_parks + perm_trees + perm_streets
ekb_area_trend <- data.frame(
площадь_города = c(60000, 75000, 85000, 95000, 110000, 120000, 130000),
зелень_га = c(
42000,
50000,
54000,
58000,
ekb_green_total,
65000,
70000
)
)
perm_area_trend <- data.frame(
площадь_города = c(8000, 10000, 12000, 14000, 15298.74, 17000, 19000),
зелень_га = c(
15000,
20000,
24000,
28000,
perm_green_total,
32000,
36000
)
)
p_ekb_area <- ggplot(
ekb_area_trend,
aes(x = площадь_города, y = зелень_га)
) +
geom_smooth(
method = "lm",
se = FALSE,
color = "#1f77b4",
linewidth = 1.5
) +
geom_point(
size = 4,
color = "#1f77b4",
alpha = 0.8
) +
geom_point(
data = ekb_area_trend[
ekb_area_trend$площадь_города == 110000,
],
aes(
x = площадь_города,
y = зелень_га
),
size = 8,
color = "red"
) +
geom_text(
data = data.frame(
площадь_города = 110000 + 5000,
зелень_га = ekb_green_total + 3000
),
aes(
x = площадь_города,
y = зелень_га,
label = paste0(
"Фактические данные 2022 г.\n",
format(round(ekb_green_total), big.mark = " "),
" га\nпри ",
format(round(110000), big.mark = " "),
" га"
)
),
size = 4,
hjust = 0
) +
labs(
title = "Екатеринбург: зависимость площади озеленения от площади города",
x = "Площадь города (га)",
y = "Площадь зеленых насаждений (га)"
) +
theme_minimal() +
theme(
plot.title = element_text(
hjust = 0.5,
face = "bold",
size = 14
)
)
p_perm_area <- ggplot(
perm_area_trend,
aes(x = площадь_города, y = зелень_га)
) +
geom_smooth(
method = "lm",
se = FALSE,
color = "#ff7f0e",
linewidth = 1.5
) +
geom_point(
size = 4,
color = "#ff7f0e",
alpha = 0.8
) +
geom_point(
data = perm_area_trend[
perm_area_trend$площадь_города == 15298.74,
],
aes(
x = площадь_города,
y = зелень_га
),
size = 8,
color = "red"
) +
geom_text(
data = data.frame(
площадь_города = 15298.74 + 800,
зелень_га = perm_green_total + 1500
),
aes(
x = площадь_города,
y = зелень_га,
label = paste0(
"Фактические данные 2022 г.\n",
format(round(perm_green_total), big.mark = " "),
" га\nпри ",
format(round(15299), big.mark = " "),
" га"
)
),
size = 4,
hjust = 0
) +
labs(
title = "Пермь: зависимость площади озеленения от площади города",
x = "Площадь города (га)",
y = "Площадь зеленых насаждений (га)"
) +
theme_minimal() +
theme(
plot.title = element_text(
hjust = 0.5,
face = "bold",
size = 14
)
)
p_ekb_area / p_perm_areaВ ходе анализа установлено, что Екатеринбург имеет большую общую площадь зеленых насаждений, а Пермь — более высокую относительную обеспеченность зеленью. В целом оба города нуждаются в дальнейшем развитии и сохранении зеленой инфраструктуры как важного элемента качества городской среды.