简介
在本篇博客中,我们将使用Google Earth Engine (GEE) 对土地覆盖变化进行年度和月度的分析。通过Google的Dynamic World数据集,我们可以识别2023年至2024年间土地覆盖的类型和变化。
背景知识
Google Dynamic World数据集
Google/DYNAMICWORLD/V1数据集提供了高分辨率的土地覆盖数据,这些数据可以用来分析土地覆盖类型和变化。
土地覆盖变化分析
土地覆盖变化分析是环境监测和土地管理的重要组成部分,有助于了解地表覆盖和利用模式的转变。
完整代码
代码语言:javascript复制// 定义研究点坐标
var cor = [49.349581955929196, 37.390543498162955];
var loc = ee.Geometry.Point(cor);
// 加载FAO GAUL数据集并筛选研究区域
var roi = ee.FeatureCollection("FAO/GAUL/2015/level1").filterBounds(loc);
Map.centerObject(roi);
Map.addLayer(roi);
// 加载Google Dynamic World土地覆盖数据集
var map = ee.ImageCollection("GOOGLE/DYNAMICWORLD/V1")
.filterDate('2023', '2024')
.filter(ee.Filter.calendarRange(1, 12, 'month'))
.filterBounds(roi);
// 计算年度土地覆盖
var annual_map = map.select('label').mode();
var VIS_PALETTE = [
'419bdf', '397d49', '88b053', '7a87c6', 'e49635', 'dfc35a', 'c4281b',
'a59b8f', 'b39fe1'
];
Map.addLayer(annual_map.clip(roi), {min: 0, max: 8, palette: VIS_PALETTE}, 'map2013', false);
// 导出年度土地覆盖图像
Export.image.toDrive({
image: annual_map.clip(roi),
description: 'annual_map',
scale: 30,
maxPixels: 1e13,
region: roi,
crs: annual_map.getInfo().crs
});
// 定义时间序列集合函数
function temporal_collection(collection, start, count, interval, unit) {
var seq = ee.List.sequence(0, ee.Number(count).subtract(1));
var origin_date = ee.Date(start);
return ee.ImageCollection(seq.map(function (i) {
var start_date = origin_date.advance(ee.Number(interval).multiply(i), unit);
var end_date = origin_date.advance(ee.Number(interval).multiply(ee.Number(i).add(1)), unit);
return collection.filterDate(start_date, end_date).mode()
.set('system:time_start', start_date.millis())
.set('system:time_end', end_date.millis());
}));
}
// 创建月度土地覆盖集合
var monthly = temporal_collection(map.select('label'), '2023', 12, 1, 'month');
Map.addLayer(monthly.toBands().clip(roi), [], 'monthly_map', false);
// 更新月度土地覆盖图像的波段名称
var monthly_updated = monthly.map(function (img) {
var date = img.date().format('YYYY-MM-dd');
return img.rename(date);
});
print(monthly_updated.toBands());
// 导出月度土地覆盖图像
Export.image.toDrive({
image: monthly_updated.toBands().clip(roi),
description: 'monthly_lc',
scale: 30,
maxPixels: 1e13,
region: roi,
crs: monthly_updated.toBands().getInfo().crs
});
代码详解
1. 定义研究点
创建一个点对象loc
,用于确定研究区域。
2. 加载FAO GAUL数据集
加载并筛选与研究点相交的区域roi
。
3. 加载Google Dynamic World土地覆盖数据集
加载指定时间范围内的Google Dynamic World土地覆盖数据。
4. 计算年度土地覆盖
使用mode
方法计算2023年的土地覆盖类型。
5. 导出年度土地覆盖图像
将年度土地覆盖图像导出到Google Drive。
6. 定义时间序列集合函数
定义temporal_collection
函数,用于生成时间序列的土地覆盖图像集合。
7. 创建月度土地覆盖集合
使用temporal_collection
函数创建2023年的月度土地覆盖集合。
8. 更新月度土地覆盖图像的波段名称
将每个月份的图像波段重命名,以反映对应的日期。
9. 导出月度土地覆盖图像
将月度土地覆盖图像导出到Google Drive。
结论
本教程展示了如何使用GEE对Google Dynamic World数据集进行年度和月度土地覆盖变化分析。通过这些分析,我们可以了解土地覆盖类型的分布和随时间的变化。
进一步探索
GEE提供了多种工具和方法来进行土地覆盖变化分析。在后续的教程中,我们将继续探索GEE在不同领域的应用。