Py学习  »  机器学习算法

R语言机器学习土地覆被分类实例

GEE遥感训练营 • 1 年前 • 394 次点击  
在R中处理空间数据需要大量的数据处理,例如从不同的文件格式阅读,在空间格式之间转换,从点图层创建表格,以及预测空间栅格图像。mlr3spatial的目标是简化mlr3生态系统中的这些工作流程。作为一个实际的例子,我们将执行一个德国城市莱比锡土地覆盖分类。图1展示了这类任务的典型工作流程:加载训练数据,创建空间任务,用它训练模型,并预测最终的栅格图像。
图1.mlr3spatial的空间预测工作流

在这里我们假设你已经熟悉mlr3生态系统,并且有遥感的基础知识,如果没有的话建议先学习mlr3,并学习空间分析基础知识。

土地覆被分类

土地覆被是覆盖地球表面的物质或植被,包括自然和人为特征。了解土地覆盖模式和随时间的变化对于应对气候变化、土地退化和生物多样性丧失等全球环境挑战至关重要。土地覆盖分类是将土地覆盖类别分配给栅格图像中的像素的过程。使用mlr3spatial,我们可以轻松地在mlr3生态系统中进行土地覆盖分类。

所需R包

在开始土地覆被分类之前,需要先加载所需的R包:

  • mlr3spatial包,基于terra包,可以处理栅格数据,以及sf包处理的矢量数据
library(mlr3verse)
library(mlr3spatial)
library(terra, exclude = "resample")
library(sf)

数据输入

本实例使用的栅格数据是德国莱比锡地区的Sentinel-2影像,分辨率10m,数据存在mlr3spatial包中作为实例数据存在。使用terra::rast()读取本栅格数据。

leipzig_raster = rast(system.file("extdata""leipzig_raster.tif", package = "mlr3spatial"))
leipzig_raster
plot(leipzig_raster)
实验数据的元数据信息
预览实验数据

训练数据是存储在GeoPackage中的样本点数据,在这里使用sf包读取并创建一个样点图层。

leipzig_vector = read_sf(system.file("extdata""leipzig_points.gpkg", package = "mlr3spatial"), stringsAsFactors = TRUE)
leipzig_vector
样本点

我们使用ggplot2tidyterra这两个包,绘制这两个图层,以了解数据的总体情况。训练点位于林登瑙区和西中心区。

library(ggplot2)
library(tidyterra, exclude = "filter")

ggplot() +
  geom_spatraster_rgb(data = leipzig_raster, r = 3, g = 2, b = 1, max_col_value = 5451) +
  geom_spatvector(data = leipzig_vector, aes(color = land_cover)) +
  scale_color_viridis_d(name = "Land cover", labels = c("Forest""Pastures""Urban""Water")) +
  theme_minimal()
预览图

土地覆被样本训练与预测

as_task_classif_st() 函数直接从点图层创建空间任务。这样就不需要将点图层转换为带有坐标的 data.frame。空间任务会额外存储训练点的坐标。在使用空间重采样估计模型性能时,坐标非常有用。

将sf对象转换为机器学习备用的空间任务

现在,我们可以用任务来训练一个模型。我们使用 rpart 软件包中的一个简单决策树学习器。classif_st任务是 classif任务的特化,因此可与所有classif学习器一起使用。

为了获得莱比锡完整的土地覆被分类,我们必须对每个像素进行预测,并返回包含这些预测结果的栅格图像。学习器的$predict()方法只适用于表格数据。要预测栅格图像,我们需要使用predict_spatial()函数。

# 土地覆被图的预测
land_cover = predict_spatial(leipzig_raster, learner)

#预览土地覆被图
ggplot() +
  geom_spatraster(data = land_cover) +
  scale_fill_viridis_d(name = "Land cover", labels = c("Forest""Pastures""Urban""Water")) +
  theme_minimal()
土地覆被机器学习解译结果

结论

有了mlr3spatial软件包,用 R 处理空间数据就变得非常简单。您可以使用点图层快速训练模型,并预测光栅图像。mlr3spatial软件包仍在开发中,我们期待您的反馈和贡献。

参考文献

  1. https://mlr-org.com/gallery/technical/2023-02-27-land-cover-classification/


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/168175