前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Google Earth Engine(地表参量计算)

Google Earth Engine(地表参量计算)

作者头像
GIS与遥感开发平台
发布2022-04-29 08:32:01
8540
发布2022-04-29 08:32:01
举报

Google Earth Engine(地表参量计算)

本期我们讲一下如何利用GEE对地表参量(以地表蒸散为例)进行计算。地表蒸散的计算不光会用到遥感数据还会用到一些气象数据。这里的气象数据我们可以使用再分析数据。

GEE上有许多的再分析数据,一般可以满足我们的研究需要。

本次,我们用Landsat-8和再分析数据对北京区域的蒸散发进行计算。

landsat-8蒸散发计算

数据:Landsat-8,再分析数据

研究区域:北京

模型:王开存老师在2008年提出的一种经验模型

其中,ET为地面蒸散值,Rn为净辐射(GEE没有净辐射,就用净长波加短波),Ta为气温,DT为一天的温差。

我们本次利用Landsat-8计算了北京在6月份到10月份的平均蒸散发值,并且与MODIS官方产品(MOD16)进行比较。发现与官方产品差异不大,说明效果还是可以的。 代码:

代码语言:javascript
复制
var table = ee.FeatureCollection("users/boyxiaozheng/feature/beijing");
function cal_ndvi(image){
  var mask=ee.Algorithms.Landsat.simpleCloudScore(image).select(['cloud']).lte();
  var ndvi=image.normalizedDifference(['B5', 'B4']).updateMask(mask).rename('NDVI');
  return image.addBands(ndvi);
}
var ndvi_image= ee.ImageCollection("LANDSAT/LC08/C01/T1_RT")
  .filterBounds(table.geometry())
 // .filter(ee.Filter.lt('CLOUD_COVER',10))
  .filterDate('2017-06-01','2017-10-01')
  .map(cal_ndvi);

var img_list=ndvi_image.toList();
var et_list=[];
for (var i=;i<;i++){
  var img=img_list.get(i);
  var s_t=ee.Date(ee.Image(img).get('DATE_ACQUIRED'));
  var ndvi=ee.Image(img).select('NDVI');
  var era5=ee.ImageCollection("ECMWF/ERA5/DAILY")
                              .filterDate(s_t,ee.Date(s_t).advance(,'day'))
                              .mean();

  var gldas=ee.ImageCollection("NASA/GLDAS/V021/NOAH/G025/T3H")
                              .filterDate(s_t,ee.Date(s_t).advance(,'day'))
                              .mean();
  var cons1=ee.Image.constant(0.1440);
  var cons2=ee.Image.constant(0.6495);
  var cons3=ee.Image.constant(0.009);
  var cons4=ee.Image.constant(0.0163);
  var l_rn=gldas.select('Lwnet_tavg');
  var s_rn=gldas.select('Swnet_tavg');
  var max_ta=era5.select('maximum_2m_air_temperature').subtract(ee.Image.constant(273.15));
  var min_ta=era5.select('minimum_2m_air_temperature').subtract(ee.Image.constant(273.15));
  var mean_ta=era5.select('mean_2m_air_temperature').subtract(ee.Image.constant(273.15));
  var et_wang=l_rn.add(s_rn).multiply(cons1.add(cons2.multiply(ndvi).add(cons3.multiply(mean_ta).add(cons4.multiply(max_ta.subtract(min_ta)))))).rename('wang_LE');

  et_list.push(et_wang);


}


var et_list2=ee.List(et_list)

var et_year=ee.ImageCollection.fromImages(et_list2).mean().clip(table.geometry());

var mod16=ee.ImageCollection("MODIS/006/MOD16A2")
                            .filterDate('2017-06-01','2017-10-01')
                            .filterBounds(table.geometry())
                            .mean()
                            .clip(table.geometry())
                            .select('LE');

var visparam = {
  min: ,
  max: ,
  palette:  'FFFFFF, CE7E45, DF923D, F1B555, FCD163, 99B718, 74A901, 66A000, 529400,' +
   '3E8601, 207401, 056201, 004C00, 023B01, 012E01, 011D01, 011301'
};
var visParam2 = {
 min: ,
 max: ,
 palette: 'FFFFFF, CE7E45, DF923D, F1B555, FCD163, 99B718, 74A901, 66A000, 529400,' +
   '3E8601, 207401, 056201, 004C00, 023B01, 012E01, 011D01, 011301'
};
Map.centerObject(et_year,);
Map.addLayer(et_year,visparam);
//Map.addLayer(mod16,visparam);

结果:

验证结果:

wang_LE(W/m^2)为本次计算的值,LE为MOD16官方产品的值。由于单位不一样,并且MOD16要乘上一个比例系数,因此要把MOD16除以8.64才可以和我们计算的结果比较。可以看出来两个值还是差不多的。

本次计算没有考虑水体的蒸散计算与陆面蒸散计算的差异,可以继续完善。同时,由于再分析数据分辨率较粗,所以计算的结果里面会有网格,可以对再分析数据进行插值进行改善。

本次我们讲了如何运用GEE对地表参量进行计算(地表蒸散)。下一期,我们将会讲到,如何利用经纬度提取数据并导出。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GIS与遥感开发平台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档