【GEE学习笔记】下载 DEM 数据,并计算坡度(Slope)和坡向(Aspect),然后分别保存它们到 Google Drive
【GEE学习笔记】下载 DEM 数据,并计算坡度(Slope)和坡向(Aspect),然后分别保存它们到 Google Drive
文章目录
欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!
大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “
学术会议小灵通
”或参考学术信息专栏:https://blog.youkuaiyun.com/gaoxiaoxiao1209/article/details/146181282
数据下载
- 选取 DEM 数据 并裁剪到研究区。
- 计算坡度(Slope)和坡向(Aspect)。
- 分别导出三张影像(DEM、坡度、坡向) 到 Google Drive。
// 1. 选择 GLO-30 DEM 数据,并转换为单个 Image
var dataset = ee.ImageCollection('COPERNICUS/DEM/GLO30').mosaic(); // 解决错误
var elevation = dataset.select('DEM'); // 选择DEM波段
// 2. 计算坡度(Slope)和坡向(Aspect)
var slope = ee.Terrain.slope(elevation); // 计算坡度
var aspect = ee.Terrain.aspect(elevation); // 计算坡向
// 3. 定义通用导出函数
function exportImage(image, description, fileNamePrefix, table) {
Export.image.toDrive({
image: image,
description: description,
fileNamePrefix: fileNamePrefix, // 文件名
folder: "ST_", // 存储的文件夹
scale: 30, // 分辨率
region: table, // 研究区
maxPixels: 1e13, // 最大像素
crs: "EPSG:4326" // 设置投影
});
}
// 4. 裁剪数据到研究区
var elevation_clipped = elevation.clip(table);
var slope_clipped = slope.clip(table);
var aspect_clipped = aspect.clip(table);
// 5. 导出数据
exportImage(elevation_clipped, "DEM_Elevation", "DEM_Elevation", table);
exportImage(slope_clipped, "DEM_Slope", "DEM_Slope", table);
exportImage(aspect_clipped, "DEM_Aspect", "DEM_Aspect", table);
错误原因
报错信息:
"Image.load: Asset 'COPERNICUS/DEM/GLO30' is not an Image."
这是因为 COPERNICUS/DEM/GLO30
是一个 ImageCollection
,而不是单个 Image
。
在 GEE 中:
ee.ImageCollection('COPERNICUS/DEM/GLO30')
返回一个影像集合,其中包含多个影像,不能直接当作ee.Image
使用。ee.Image('COPERNICUS/DEM/GLO30')
无效,因为COPERNICUS/DEM/GLO30
是集合,而非单个影像。
解决方案
需要从 ImageCollection 中选取单个影像,一般使用 .mosaic() 或 .first() 方法:
使用 mosaic()
(推荐 ✅):
mosaic()
将ImageCollection
合并 成单个 Image,适用于无缝拼接的全球 DEM 数据。- 适用于 GLO-30 这样的 DEM 数据。
使用 first()
(可选 ❗):
first()
仅选择集合中的第一个影像,但COPERNICUS/DEM/GLO30
可能包含多个 tile,直接first()
可能丢失部分区域。