第二篇GEE中使用降水数据集求年平均降水(1)

目录

一、主要信息

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

(二)可用时间

(三)空间分辨率

(四)时间分辨率

(五)所含主要波段

二、数据集的使用

(一)具体代码

(二)结果


一、主要信息

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

JAXA Earth Observation Research Center、"JAXA/GPM_L3/GSMaP/v6/operational"

(二)可用时间

2014030100:00:00–至今

(三)空间分辨率

11132

(四)时间分辨率

3小时

(五)所含主要波段

如下表

名字

单位

最小值

最大值

描述

hourlyPrecipRate

毫米/小时

0

204.88

逐小时降水率快照

hourlyPrecipRateGC

毫米/小时

0

200.36

根据雨量计调整的每小时降水率快照

observationTimeFlag

小时

-124.72

16.06

从文件开始时间开始的相对时间到微波辐射计(成像仪/测深仪)观测的时间

二、数据集的使用

(一)具体代码

使用此数据集计算一个区域(roi)的年平均降水(注意:1、这里需要自己定义一个感兴趣区域roi。2、使用此数据集不可超出它的可用时间范围。)

//1.JAXA/GPM_L3/GSMaP/v6/operational

//创建了一个变量dataset,用于存储从JAXA/GPM_L3/GSMaP/v6/operational数据集中获取的图像集合。

//通过.filter方法筛选了日期范围为'2014-03-01'至'2023-12-25'之间的图像。

var dataset = ee.ImageCollection('JAXA/GPM_L3/GSMaP/v6/operational')

                  .filter(ee.Filter.date('2014-03-01', '2023-12-25'));

                 

//创建一个变量precipitation,用于存储从dataset中选择的名为'hourlyPrecipRate'的降水率图层

var precipitation = dataset.select('hourlyPrecipRate');



//将名为roi的图层添加到地图中,roi表示感兴趣区域

Map.addLayer(roi);



//以roi为中心,将地图视图设置为缩放级别8

Map.centerObject(roi,8);



// 定义空间和时间范围

var startyear = 2015;

var endyear = 2023;

var startmonth = 1;

var endmonth = 1;



//使用ee.Date.fromYMD方法创建了一个起始日期,其中年、月和日分别由startyear、startmonth和1指定

var startdate = ee.Date.fromYMD(startyear, startmonth, 1);



//使用ee.Date.fromYMD方法创建了一个结束日期,其中年、月和日分别由endyear+1(加1表示下一年)、endmonth和1指定。

var enddate = ee.Date.fromYMD(endyear + 1, endmonth, 1);



// 创建了一个包含起始年份到结束年份范围的年份列表

var years = ee.List.sequence(startyear, endyear);



// 使用filterDate方法根据起始日期和结束日期筛选出在该时间范围内的降水数据,

//并使用sort方法按照'系统时间开始'属性进行逆序排序。

var P = precipitation.filterDate(startdate, enddate)

  .sort('system:time_start', false);

 

// 计算每年的降水量,创建了一个名为yearlyP的图像集合,其中每个图像代表每年的降水量。

//通过map方法遍历年份列表,对每一年的降水数据进行求和并设置相关属性。

var yearlyP = ee.ImageCollection.fromImages(

  years.map(function(y) {

    var w = P.filter(ee.Filter.calendarRange(y, y, 'year')).sum();

    return w.set('year', y)

      .set('date', ee.Date.fromYMD(y, 1, 1))

      .set('system:time_start', ee.Date.fromYMD(y, 1, 1));

  })

);



// 预定义了可视化参数,包括最小值、最大值和颜色调色板。

var p_viz = {

  min: 0.0,

  max: 30.0,

  palette:

      ['1621a2', 'ffffff', '03ffff', '13ff03', 'efff00', 'ffb103', 'ff2300'],

};



// 预定义了图表的标题、横轴标题和纵轴标题。

var title = {

  title: 'Yearly precipitation',

  hAxis: { title: 'Time' },

  vAxis: { title: 'Precipitation (mm)' },

};



//创建了一个图表,通过ui.Chart.image.seriesByRegion方法以区域为单位绘制图像集合的时间序列。

var chart = ui.Chart.image.seriesByRegion({

    imageCollection: yearlyP,

    regions: roi,

    reducer: ee.Reducer.mean(),

    scale: 2500,

    xProperty: 'system:time_start',

    seriesProperty: 'SITE'

  })

  .setOptions(title)

  .setChartType('ColumnChart');



// 打印图表,将其输出显示在控制台上

print(chart);

(二)结果

这里roi以湖南省(如图1)为例,运行结果如图2所示。将鼠标移到柱状图上就可以显示年平均降水量。

鼠标左键点击柱状图右上角的箭头图标,可以保存为三种格式,分别是csv表格格式、svg和png图片格式,如图3所示。

​(图1)

(图2)

(图3)

### 将 GEE 降水数据导入 GIS 系统的方法 为了将 Google Earth Engine (GEE)降水数据成功导入到地理信息系统(GIS),通常有两种主要方法:通过导出功能下载数据至本地文件系统再加载到GIS软件中;或是利用API接口直接在支持Python或其他编程语言的环境中调用并处理这些数据。 #### 方法一:导出数据并通过文件形式载入GIS 当选择此路径时,可以通过 `Export.image.toDrive` 或者其他类似的命令来指定要保存的数据集及其参数设置[^1]。具体实现如下: ```javascript // 定义感兴趣的区域和时间范围内的降水量集合 var precipitationCollection = ee.ImageCollection('UCSB-CHG/CHIRPS/DAILY') .filterDate('2023-01-01', '2023-12-31'); // 计算平均每日降水量 var meanPrecipitation = precipitationCollection.mean(); // 设置导出任务并将结果发送到Google Drive账户下的特定文件夹内 Export.image.toDrive({ image: meanPrecipitation, description: 'mean_precipitation_2023', scale: 500, // 分辨率单位为米 region: areaOfInterest.geometry(), // 用户自定义的研究区边界 }); ``` 完成上述过程之后,在个人电脑上安装有ArcGIS Pro、QGIS等桌面版GIS工具的情况下,可以从Google云端硬盘下载对应的GeoTIFF格式文件,并将其添加到地图文档里进一步分析或制图。 #### 方法二:使用 API 接口实时获取数据 对于那些希望保持最新状态而不必频繁更新静态副本的应用场景来说,采用编程方式连接GEE服务器可能是更好的解决方案之一。以 Python为例,可以先安装必要的库如geemap,接着编写脚本来访问所需资源并绘制图表或者创建交互式的Web应用程序[^4]。 ```python import geemap.eefolium as gee # 初始化Map对象 m = gee.Map() # 加载全球日降雨量数据集 precipitation_data = ee.ImageCollection("UCSB-CHG/CHIRPS/DAILY") # 应用时间和空间过滤器选取目标时间段和地区内的记录 filtered_collection = ( precipitation_data.filterDate("2023-01-01", "2023-12-31") .filterBounds(area_of_interest) ) # 取得均值图像表示全年累计降水平均分布情况 average_rainfall_image = filtered_collection.sum().divide(365).clip(area_of_interest) # 添加图层到当前视窗展示出来 m.addLayer(average_rainfall_image, {'min': 0, 'max': 10}, name="Annual Average Rainfall") # 显示最终成果给用户查看 m.centerObject(area_of_interest) m ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Gee Explorer

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

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

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

打赏作者

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

抵扣说明:

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

余额充值