Py学习  »  机器学习算法

干货分享 | AI EARTH获取Landsat影像QGIS制作解译样点R语言机器学习土地覆被分类

地研联 • 6 天前 • 20 次点击  

记录一下课上演示的一个遥感云计算+机器学习土地覆被解译的例子。

数据获取

使用AI EARTH下载Landsat9影像数据,自己随意指定一个研究区即可。

  • AI EARTH:https://engine-aiearth.aliyun.com/#/portal/open-data
检索数据,图形化界面,裁剪很简单
检索数据,图形化界面,裁剪很简单

R语言机器学习土地覆被解译

前面给大家分享过一个实例,R语言机器学习土地覆被分类实例,不过推文里面由于倏忽,少粘了点代码,完整代码请看原文:

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

QGIS制作样本点

使用QGIS建一个GeoPackage,然后点样本点,详细操作看B站视频,不赘述

R语言机器学习土地覆被解译代码

简单说一下需要注意的点:

  • 机器学习的样本数据,类型必须使用因子型factor
  • 机器学习的样本字段,必须和影像字段完全对应

不理解没关系,看视频

视频二维码贴在这,欢迎关注我的B站
视频二维码贴在这,欢迎关注我的B站,下面是视频号中的讲解,欢迎关注视频号

代码直接全部放上来:

library(mlr3verse)
library(mlr3spatial)
library(terra, exclude = "resample")
library(sf)
library(tidyverse)
library(tidyterra)

Kunming_raster = rast("./Raster/KunmingLandsat9.tif")
Kunming_raster
plot(Kunming_raster)

Kunming_vector = read_sf("./Raster/ROI.gpkg", query = 'SELECT * FROM Kunming_vector2') %>% 
  mutate(land_cover = as.factor(land_cover))
Kunming_vector
plot(Kunming_vector)

#提取栅格像元值
km_vect = terra::extract(Kunming_raster, Kunming_vector)
km_vect
Kunming_vector = cbind(Kunming_vector, km_vect)
Kunming_vector = Kunming_vector %>% 
  dplyr::select(-ID)
Kunming_vector


ggplot() +
  geom_spatraster_rgb(data = Kunming_raster, r = 4, g = 3, b = 2, max_col_value = 20000) +
  geom_spatvector(data = Kunming_vector, aes(color = land_cover)) +
  scale_color_viridis_d(name = "Land cover", labels = c("Forest""Farm""Buildings""Water")) +
  theme_minimal()

task = as_task_classif_st(Kunming_vector, target = "land_cover")
task

learner = lrn("classif.rpart")
learner$train(task)

# predict land cover map
land_cover = predict_spatial(Kunming_raster, learner)
land_cover
plot(land_cover)
遥感影像和样本点预览图
遥感影像和样本点预览图
机器学习介意结果
机器学习介意结果

常见问题

创建任务报错

创建分类任务的时候可能报错,如下图 task = as_task_classif_st(Kunming_vector, target = "land_cover") 错误于.__TaskClassifST__coordinate_names(self = self, private = private, : Assertion on 'rhs' failed: Must have length 2, but has length 3.

报错
报错

这是因为导入的点有高程信息,机器学习解译所需的点位不能有高程信息,只能有x,y坐标。

必须是POINT,不能是POINTZ
必须是POINT,不能是POINTZ

由于初始文件是使用两步路获取的照片点位,因此存储了高程Z信息,在进行R语言机器学习解译时,需要从QGIS中把点位中的Z去除,导出Points类型的矢量,并且把Z高程信息去掉。

几何类型必须指定为Point,Include z-dimension必须去掉
几何类型必须指定为Point,Include z-dimension必须去掉

转载自走天涯徐小洋地理数据科学

文章仅代表作者观点,与本公众号无关,版权归原作者所有

原文标题:【更新报错解决方案】AI EARTH获取Landsat影像QGIS制作解译样点R语言机器学习土地覆被分类

END

图文编辑:何韵依 王松海

审编:王玉瑶 郭书阳 

终审:初明若 李雨竹 代浩宇 毕丝淇  

猜你喜欢

  1. 会议通知 | 第二届全国信息地理学大会

  2. 佳文赏析 | Journal of Plant Ecology 全球变化下的青藏高原:环境剧变与生态预警

  3. 专题征稿 | 人工智能驱动的土地、能源和交通系统整合,打造未来智慧城市

  4. 地理荐书 | 地缘政治学导论

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/184467
 
20 次点击