本文将介绍如何在 Google Earth Engine (GEE)平台上计算某一段时期内,某种地物连续存在的最长时间,比如,在2010-2024年之间,某个区域内撂荒地最长连续存在过多长时间、水体存在的最长时间、森林消失的最长时间、夜光灯光消失的最长时间、耕地存在的最长时间等等。单位为用户自己创建的数据集的时间间隔,可以是年、也可以是月或者日。
结果如下图所示。以土地利用数据为例,研究森林最长连续出现时间,灰色为底图颜色,黑色为5年,墨绿色3年
,绿色2年
,黄色1年。
一、核心函数
引入函数库,并调用计算函数:
var eemrl = require('users/949384116/lib:TimeSeriesAnalysis/MaxRunLength');
var result = eemrl.calMaxRunLength(collection);
二、完整示例代码链接
https://code.earthengine.google.com/7b4897b7b254228a834e3cdc7f344697?noload=true
三、完整示例代码
导入自己的研究区,之后直接运行。可以将输入数据集修改为自己的数据集,但是要提前二值化,将不需要关注的类别设置为0,只保留自己关注的类别的变化。
本文以‘COPERNICUS/Landcover/100m/Proba-V-C3/Global’数据集为例,收集了5年的土地利用数据,选择地类标签为114的类别进行计算。假如5年里,114地类最长连续出现时间为5,那么就输出像素值5。
var roi = table;
Map.centerObject(roi, 7);
for (var i = 2015; i <= 2019; i++) {
var dataset = ee
.Image('COPERNICUS/Landcover/100m/Proba-V-C3/Global/' + i)
.select('discrete_classification')
.clip(roi);
Map.addLayer(dataset.clip(roi), {}, 'Land Cover_' + i, false);
}
function maskOffOtherClasses(img) {
return img.neq(114).clip(roi);
}
var collection = ee
.ImageCollection('COPERNICUS/Landcover/100m/Proba-V-C3/Global')
.select('discrete_classification')
.map(maskOffOtherClasses);
var eemrl = require('users/949384116/lib:TimeSeriesAnalysis/MaxRunLength');
var