Tips:數據空間分辨率建议重采样至一致,但基于目前的尝试来说不进行空间分辨率统一并不对结果产生影响,栅格和矢量数据要定義投影坐標系以保證具有綫性單位
一、必须数据及数据格式
Workspace:工作空間 建一個專屬文件夾
Precipitation(Raster):降水数据
Evapotranspiration(Raster)):蒸发数据
Root Restricting Layer Depth(Raster):植被根系限制层数据
植被根系限制层数据如果较难直接找到,根据官方文档的参考该数据可以使用土层深度进行替换
Plant Available Water Content(Raster)):土层内植被可用水量
Land Use/Land Cover(Raster)):土地利用数据
Biophysical Table(CSV):植被生理系数表
Z Parameter(键入数字):水文地质特征及降水季节分布
Watersheds:研究区边界文件
二、标红数据
标红数据是本人认为较难下载处理的数据,与传统的数据下载所见即所得不同,此类数据下载后处理较为繁琐,需要借助较多软件
1.Root Restricting Layer Depth(Raster):植被根系限制层数据和Plant Available Water Content(Raster)):土层内植被可用水量
使用HWSD数据(https://www.fao.org/soils-portal/data-hub/soil-maps-and-databases/harmonized-world-soil-database-v12/en/)
图 1HWSD官网
图 2数据下载处
点击 Download database (.mdb) 和 HWSD Raster
下载后的处理参见世界土壤数据库(HWSD)全球土壤数据下载处理 - 知乎
2. Biophysical Table(CSV):植被生理系数表!!!!!!
该表内的数据不能随意填写,不然结果会有很大的影响
表 1样表
lucode | LULC_desc | lulc_veg | root_depth | kc |
0 | Nodata | 0 | -1 | 0 |
1 | Cropland | 1 | -1 | 0.614 |
2 | Forest | 1 | -1 | 0.929 |
3 | Shrub | 1 | -1 | 0.88 |
4 | Grassland | 1 | -1 | 0.88 |
5 | Water | 0 | -1 | 0.184 |
6 | Sonw/Ice | 0 | -1 | 0.184 |
7 | Barren | 0 | -1 | 0 |
8 | Impervious | 0 | -1 | 0 |
Lucode:你所使用的土地利用数据的每一类土地利用类型的值代码
LULC_desc:(可有可无):土地利用类型描述
root_depth:除有植被的土地利用类型以外全部不填,有植被的土地利用类型如草地,林地查不到类似数据的可以以-1替代
lulc_veg:依据官方文档该处是用于对于除湿地之外的所有植被类别输入 1,对于所有其他类别输入 0,包括湿地、城市地区、水体等。
Kc:土地利用类型的植被系数 需要用到计算工具(其实就是官方提供的一个excel表)
下载链接http://data.naturalcapitalproject.org/invest-data/Kc_calculator.xlsx
图 3 kc tool界面
Kc工具需要用到研究区的研究年的每月蒸发量数据,这里我们使用Google earth engine调用MOD16A2进行相关计算,当然你也可以自己下载相关数据查看
本人已写好并检查完美运行的代码链接如下
https://code.earthengine.google.com/f453cc3af9ab21f9b7a3da3ae5035a09
图4代码界面
// 定义 shapefile 文件路径
var shpFile = ee.FeatureCollection('users/lioucc/1');
// 获取区域几何信息
var region = shpFile.geometry();
// 定义时间范围
var startDate = '2022-01-01';
var endDate = '2022-12-31';
// 调用 MODIS/006/MOD16A2 数据集
var dataset = ee.ImageCollection('MODIS/006/MOD16A2')
.filterBounds(region)
.filterDate(startDate, endDate);
// 选择感兴趣的蒸发数据(ET)
var evapotranspiration = dataset.select('ET');
// 定义时间范围
var months = ee.List.sequence(1, 12);
// 定义一个函数来计算每月最大蒸发量
var calculateMaxEvapotranspiration = function(month) {
var filtered = evapotranspiration.filter(ee.Filter.calendarRange(month, month, 'month'));
var monthlyMax = filtered.max();
var clipped = monthlyMax.clip(region);
return clipped.set('month', month);
};
// 对每个月应用函数来计算每月最大蒸发量
var monthlyMaxEvapotranspiration = ee.ImageCollection.fromImages(months.map(calculateMaxEvapotranspiration));
// 转换为列表
var monthlyMaxEvapotranspirationList = monthlyMaxEvapotranspiration.toList(monthlyMaxEvapotranspiration.size());
// 定义一个空表格
var table = [];
// 遍历每个月的数据
for (var i = 0; i < months.length().getInfo(); i++) {
var month = ee.Number(months.get(i));
var image = ee.Image(monthlyMaxEvapotranspirationList.get(i));
var evapotranspirationValue = image.reduceRegion({
reducer: ee.Reducer.mean(),
geometry: region,
scale: 1000 // 根据需要修改分辨率
}).get('ET');
table.push([month, evapotranspirationValue]);
}
// 打印表格
print(ee.List(table));
代码中进行了每个步骤的详细介绍不再赘述,最终的计算结果会出现在console内,计算出结果后按照Kc tool内的要求进行填写就好了
最后就只需要点击RUN等待结果了
前面的其他数据也可以使用gee进行最大值合成并导出以下是代码链接
蒸发数据年最大值合成导出
https://code.earthengine.google.com/9f97ee9f7f2590279df8cef2a5d5013d