第八篇GEE中下载年总降水的栅格数据

目录

一、主要信息

(一)数据提供者和数据集

(二)可用时间

(三)空间分辨率

(四)所含主要波段

二、数据集的使用

(一)具体代码

(二)结果


一、主要信息

(一)数据提供者和数据集

University of California Merced、" IDAHO_EPSCOR/TERRACLIMATE"

(二)可用时间

19580101–20221201

(三)空间分辨率

4638.3

(四)所含主要波段

如下表

名字

单位

最小值

最大值

描述

aet

mm

0

3140

实际蒸散量,使用一维土壤水分平衡模型推导

def

mm

0

4548

气候缺水,使用一维土壤水分平衡模型推导

pdsi

-4317

3418

帕尔默干旱严重程度指数

pet

mm

0

4548

参考蒸散 (ASCE Penman-Montieth)

pr

mm

0

7245

降水累积

ro

mm

0

12560

径流,使用一维土壤水分平衡模型推导

soil

mm

0

8882

土壤湿度,使用一维土壤水分平衡模型推导

srad

W/米^2

0

5477

向下表面短波辐射

swe

mm

0

32767

使用一维土壤水分平衡模型推导的雪水当量

tmmn

-770

387

最低温度

tmmx

-670

576

最高温度

vap

千帕

0

14749

蒸气压

vpd

千帕

0

1113

蒸气压不足

vs

米/秒

0

2923

10米处的风速

二、数据集的使用

(一)具体代码

使用此数据集下载一个区域(roi)每隔5年的年总降水的栅格影像(注意:1、这里需要自己定义一个感兴趣区域roi。2、使用此数据集不可超出它的可用时间范围。)

//循环
for(var year = 1985;year <= 2020;year += 5){
//定义初始时间和终止时间
var startdate = year + '-01-01';
var enddate = year + '-12-31';
//定义dataset,选择数据集和波段
var dataset= ee.ImageCollection("IDAHO_EPSCOR/TERRACLIMATE")
                    .filterBounds(roi)
                    .select('pr')
                    .filterDate(startdate, enddate) ;
var data = dataset.filter(ee.Filter.calendarRange(1,1,'month'))
                        .reduce(ee.Reducer.sum())
                        .toDouble()
                        .clip(roi);
//循环一年12个月的降水,计算每个月的总降水再相加
for (var i=1;i<12; i++){
  var months=dataset.filter(ee.Filter.calendarRange(i,i,'month'))
                    .reduce(ee.Reducer.sum());
                          data=data.add(months);
                    }
Map.addLayer(data,{min:0,max:3000,palette:['white','black']},'precipitation_'+year);
//导出到云盘
Export.image.toDrive({
  image:data, 
  description:'precipitation_'+year, 
  folder:'LYM', 
  fileNamePrefix:'precipitation_'+year,  
  region: roi, 
  maxPixels: 1e13,
  crs:'EPSG:4326'
});
}
Map.centerObject(roi,8);

(二)结果

这里roi以赣州市(如图1)为例,运行结果如图2所示。

(图1)

(图2)

### 如何使用GIS工具或编程语言计算栅格数据的PDSI指数 #### 使用R语言进行PDSI指数计算 对于单个或多个栅格数据之间的复杂运算,可以利用`raster`包提供的功能来实现。例如,在计算帕尔默干旱严重度指数(PDSI)时,通常需要一系列气象变量作为输入参数,这些可以通过读取相应的栅格文件并执行特定函数完成。 ```r library(raster) # 假设已经准备好温度、降水等必要气候因子的栅格堆栈 climate_stack <- stack('path/to/climate_data') # 定义用于计算PDSI的自定义函数(此处仅为示意) compute_pdsi <- function(clim_vars){ # 实际应调用合适的算法模型来计算PDSI } pdsi_result <- calc(climate_stack, compute_pdsi)[^1] ``` 需要注意的是,上述代码片段中的`compute_pdsi()`应当替换为实际可用的PDSI计算逻辑,这可能涉及到更复杂的水文循环模拟或其他统计方法。 #### 使用Python进行PDSI指数计算 当选用Python环境来进行此类操作时,则更多依赖于专门设计用来处理遥感图像以及地理信息系统(GIS)任务的相关库。下面给出了一种基于现有资源构建的工作流程: ```python import numpy as np from pycalcmodel import models # 这里假设有一个名为pycalcmodel的虚拟模块提供PDSI计算支持 import rasterio def calculate_pdsi(input_rasters): """ 计算给定栅格集合上的PDSI值 参数: input_rasters (list): 输入栅格路径列表 返回: ndarray: PDSI结果矩阵 """ model = models.PalmerDroughtSeverityIndex() with rasterio.open(input_rasters[0]) as src: profile = src.profile.copy() data_arrays = [] for file_path in input_rasters: with rasterio.open(file_path) as dataset: array = dataset.read(1).astype(float) mask = ~np.isnan(array) data_arrays.append((array[mask], mask)) combined_mask = reduce(np.logical_and, [m for _, m in data_arrays]) stacked_values = np.column_stack([v.flatten()[combined_mask.flat] for v, _ in data_arrays]) computed_indices = model.compute(stacked_values.T) output_array = np.full_like(data_arrays[0][0], fill_value=np.nan) output_array[combined_mask] = computed_indices return output_array, profile output_array, profile = calculate_pdsi(['temperature.tif', 'precipitation.tif']) with rasterio.open('result_pdsi.tif', 'w', **profile) as dst: dst.write(output_array.astype(profile['dtype']), indexes=1) ``` 此脚本展示了如何通过组合不同源的数据集,并运用适当的方法论框架——在这里体现为一个虚构但合理的API接口(`models.PalmerDroughtSeverityIndex`)——最终得到目标区域内的PDSI分布情况[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gee Explorer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值