社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

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

地研联 • 3 周前 • 49 次点击  

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

数据获取

使用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
 
49 次点击