简介

在本篇博客中,我们将使用Google Earth Engine (GEE) 对土地覆盖变化进行年度和月度的分析。通过Google的Dynamic World数据集,我们可以识别2023年至2024年间土地覆盖的类型和变化。

背景知识

Google Dynamic World数据集

Google/DYNAMICWORLD/V1数据集提供了高分辨率的土地覆盖数据,这些数据可以用来分析土地覆盖类型和变化。

土地覆盖变化分析

土地覆盖变化分析是环境监测和土地管理的重要组成部分,有助于了解地表覆盖和利用模式的转变。

完整代码

// 定义研究点坐标
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.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.

代码详解

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在不同领域的应用。