大家都知道,Google Earth Engine的分类模型很少,而且如果想做不同年份和不同研究区的研究,如果下载影像的话又太麻烦了。因此,我们最近使用GEE训练了一些深度学习模型用于水体分类,并将其部署到GEE平台上可以直接应用于不同年份和不同地区的研究,去除了繁琐的影像下载,大大提高了实用性。
例如,我们将其应用于全中国不同的研究区,里面就可以得到不同的结果,如下所示:
东北地区某地的水体识别结果图
青海湖的水体识别结果图
五大湖地区某地的水体识别结果
除了可以应用于局部地区,还可以直接应用于大尺度。例如可以直接应用于东北三省,里面就能够得到水体识别结果。
东北三省的水体识别结果
最后,我们给出代码,方便有需要的同学直接调用查看,调用的时候只需要修改研究区roi和时间等信息就可以调用。
var AOI = ee.Geometry.Polygon(
[[[99.33888945955023, 37.44848808608605],
[99.33888945955023, 36.42991103988907],
[100.83303008455023, 36.42991103988907],
[100.83303008455023, 37.44848808608605]]], null, false);
var roi = AOI;
Map.addLayer(roi,{"color":'grey'},'studyArea',false);
Map.centerObject(roi);
// remove cloud from Sentinel-2
function rmS2cloud(image) {
var qa = image.select('QA60');
// Bits 10 and 11 are clouds and cirrus, respectively.
var cloudBitMask = 1 << 10;
var cirrusBitMask = 1 << 11;
// Both flags should be set to zero, indicating clear conditions.
var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
.and(qa.bitwiseAnd(cirrusBitMask).eq(0));
var mask2 = image.select("B2").lte(2000);
return image.updateMask(mask).updateMask(mask2).toFloat().divide(1e4)
.copyProperties(image)
.copyProperties(image, ["system:time_start", "system:time_end"]);
}
var year = 2020;
var month_start = 4;
var month_end = 10;
var S2_BANDS = ['B11', 'B12', 'B2', 'B3', 'B4', 'B8'];
var S2Col = ee.ImageCollection('COPERNICUS/S2_SR')
.filterBounds(roi)
.filter(ee.Filter.calendarRange(year, year,'year'))
.filter(ee.Filter.calendarRange(month_start, month_end,'month'))
.map(rmS2cloud)
.select(S2_BANDS);
var imgMedian = S2Col.median().clip(roi);
var rgbVis = {min: 0, max: 0.3, bands: ['B4', 'B3', 'B2']};
Map.addLayer(imgMedian,rgbVis,'imgMedian');
// 直接调用模型
var model = require('users/nietaoyuan/aGEECommonModule:geeDLWaterModel.js');
var imgPredict = model.waterModel(imgMedian,roi);
Map.addLayer(imgPredict,{'palette':'red'},'water');