【GEE学习笔记】下载 DEM 数据,并计算坡度(Slope)和坡向(Aspect),然后分别保存它们到 Google Drive

【GEE学习笔记】下载 DEM 数据,并计算坡度(Slope)和坡向(Aspect),然后分别保存它们到 Google Drive

【GEE学习笔记】下载 DEM 数据,并计算坡度(Slope)和坡向(Aspect),然后分别保存它们到 Google Drive



欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!

大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “学术会议小灵通”或参考学术信息专栏:https://blog.youkuaiyun.com/gaoxiaoxiao1209/article/details/146181282


数据下载

  1. 选取 DEM 数据 并裁剪到研究区。
  2. 计算坡度(Slope)和坡向(Aspect)。
  3. 分别导出三张影像(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()
    可能丢失部分区域。
### GEE 高程数据坡度时间序列分析 #### 背景介绍 地理信息系统(GIS)中的高程数据分析坡度计算是地形分析的核心内容之一。这些技术广泛应用于土地适宜性评估、水资源管理以及生态系统的动态监测等领域[^1]。利用 Google Earth Engine (GEE),可以通过编程方式高效处理大规模遥感数据,从而实现对高程数据的时间序列分析。 #### 数据源与工具 在 GEE 平台中,常用的高程数据来源于 SRTM DEM(Shuttle Radar Topography Mission Digital Elevation Model),其分辨率为 30 米。该数据能够支持多种地形参数的提取,例如海拔高度、坡度坡向等。此外,结合 Landsat 或 Sentinel 系列卫星影像,还可以进一步扩展至长时间序列的地表变化检测[^5]。 #### 实现方法 以下是基于 GEE 的高程数据坡度时间序列分析的主要流程: 1. **加载 DEM 数据** 使用 `ee.Image('USGS/SRTMGL1_003')` 加载全球范围内的 SRTM DEM 数据。 2. **定义研究区域** 设置目标地区的几何边界对象(Geometry)。这一步骤有助于减少不必要的计算提高效率[^3]。 3. **计算坡度** 利用内置函数 `.slope()` 对 DEM 图像执行坡度运算。此操作返回一个表示地面倾斜角度的新图像层。 4. **时间序列构建** 如果需要对比不同时间段内的坡度特征,则需引入其他辅助变量作为参照标准。比如植被覆盖指数 NDVI 可能会影响局部地形感知效果[^4]。 下面展示一段 Python 版本的示例代码用于演示上述过程: ```python import ee # 初始化 EE 库 ee.Initialize() # 定义兴趣区 AOI aoi = ee.Geometry.Rectangle([73, 18, 78, 24]) # 示例为中国某省份坐标框 # 获取 SRTM DEM 数据 dem = ee.Image('USGS/SRTMGL1_003').clip(aoi) # 计算坡度 slope = dem.slope().rename('slope') # 显示结果图层 Map.addLayer(dem, {'min': 0, 'max': 5000}, 'Elevation') Map.addLayer(slope, {'min': 0, 'max': 90}, 'Slope Degree') ``` 以上脚本片段展示了如何从零开始创建一个简单的 DEM 坡度可视化应用实例。 #### 结果解读 完成上述步骤后,用户可以获得指定区域内随时间推移而发生变化的各种地形属性指标图表或者热力分布地图等形式的表现形式。这对于深入理解自然环境变迁规律及其背后驱动力机制有着不可替代的作用。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

985小水博一枚呀

祝各位老板前程似锦!财源滚滚!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值