1 Введение

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

Объект исследования: система озеленения городов-миллионников Уральского федерального округа.

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

Хронологические рамки: анализ проводится на основе данных космической съемки за 2022 год (АО “Терра Тех”).

Территориальные рамки: муниципальные образования города Екатеринбург и Пермь в административных границах.

1.1 Методологические основы исследования

1.1.1 Источники данных

Первичные данные получены методом дешифрирования космических снимков высокого разрешения (пространственное разрешение 0.5-2 м) специалистами АО “Терра Тех” (группа компаний “Роскосмос”). Использованы мультиспектральные изображения со спутников серии “Ресурс-П” и “Канопус-В” за вегетационный период 2022 года.

1.1.2 Методы исследования

  • Дистанционное зондирование: автоматизированное и визуальное дешифрирование космических снимков с выделением классов землепользования.
  • ГИС-анализ: пространственный анализ распределения зеленых насаждений с использованием программного обеспечения QGIS.
  • Статистический анализ: расчет показателей плотности озеленения и их сравнительный анализ.
  • Картометрический метод: измерение площадей по растрированным изображениям.

1.1.3 Классификация зеленых насаждений

В рамках исследования выделены следующие категории:

  • Парковые территории — организованные зеленые зоны с ландшафтным дизайном.
  • Скопления деревьев — естественные и искусственные лесные массивы.
  • Уличное озеленение — аллеи, бульвары и придорожные насаждения.
  • Особо охраняемые природные территории (ООПТ) — заповедники и заказники в городской черте.

2 Характеристика объектов исследования

2.1 Общие сведения о городах

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")
)
Таблица 1.1 - Основные характеристики городов исследования
Показатель Екатеринбург Пермь
Административный статус Административный центр Свердловской области Административный центр Пермского края
Географическое положение 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\) для унификации единиц измерения с данными по Перми.

2.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 — Картографические материалы городов исследования: Екатеринбург и Пермь.

3 Анализ данных о зеленых насаждениях

3.1 Исходные данные дешифрирования

Таблица 2.1 - Структура землепользования Перми (га)
Категория Площадь_га
Плотная застройка 1159.31
Парки и ООПТ 2500.00
Скопления деревьев 4329.26
Уличное озеленение 9810.17
Таблица 2.2 - Структура землепользования Екатеринбурга (га)
Категория Площадь_га
Плотная застройка 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")
)
Таблица 2.3 - Расчет аналитических показателей
Показатель Пермь Екатеринбург
Общая площадь зеленых насаждений (га) 16 639 59 925
Доля зеленых насаждений от площади города (%) 108.8% 54.5%
Площадь зеленых насаждений на 1 жителя (м²) 160 377.1

4 Визуализация результатов

4.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)

4.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"
  )

4.3 Анализ зависимости озеленения от численности населения

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_trend

4.4 Анализ зависимости озеленения от площади города

ekb_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

4.5 Вывод

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