目录
简介
数据
代码
代码解释
结果
简介
GEE 训练教程——基于NASA/GPM_L3/IMERG_V07降水数据的时序图表分析
数据
NASA/GPM_L3/IMERG_V07数据集是来自NASA的GPM(Global Precipitation Measurement)卫星的IMERG(Integrated Multi-satellite Retrievals for GPM)产品的一个版本。GPM卫星是一个国际合作的卫星系统,旨在全球范围内测量降水并提供高质量的降水产品。
IMERG产品是基于多个卫星(包括GPM卫星)的观测数据进行整合和处理而来的。它使用了多种卫星传感器的观测数据,如微波、红外和雷达,以及地面测量站点数据,利用复杂的算法和模型进行降水估算。
IMERG V07数据集提供了0.1度分辨率的降水估计数据,其中包括每月、每日和半小时的降水数据。数据集中的主要变量是“precipitation”(降水量),以毫米/小时为单位。
通过使用IMERG数据集,可以进行各种与降水相关的研究和分析,如监测全球降水模式、洪水预测、气候变化研究等。由于其全球覆盖范围和高质量的数据,该数据集在水文学、气象学和环境科学等领域具有广泛的应用。
代码
var geometry = /* color: #d63000 */ee.Geometry.Point([-3.5742187499999867, 39.90973623453719]);
var roi = ee.FeatureCollection("FAO/GAUL_SIMPLIFIED_500m/2015/level0")
.filterBounds(geometry)
Map.centerObject(roi)
Map.addLayer(roi)
var time_start = ee.Date('2024')
var time_end = ee.Date('2025')
var pr = ee.ImageCollection("NASA/GPM_L3/IMERG_V07")
.select('precipitation')
.filterDate(time_start, time_end)
var time_dif = time_end.difference(time_start, 'days')
var list = ee.List.sequence(0, time_dif.subtract(1), 1).map(function(number){
return time_start.advance(number, 'days')
})
var pr_daily = ee.ImageCollection(list.map(function(date){
var start_date = ee.Date(date)
var end_date = start_date.advance(1, 'days')
var daily = pr.filterDate(start_date, end_date).sum()
return daily
.set('system:time_start', start_date.millis())
.set('system:time_end', end_date.millis())
.set('system:index', start_date.format('YYYY-MM-dd'))
}))
Map.addLayer(pr_daily.filter(ee.Filter.calendarRange(10, 10, 'month')).toBands().clip(roi), [], 'pr_daily', false)
print(
ui.Chart.image.series(pr_daily, geometry, ee.Reducer.first(), 10000, 'system:time_start')
)
Export.image.toDrive({
image: pr_daily.filter(ee.Filter.calendarRange(10, 10, 'month')).toBands().clip(roi).float(),
description: 'heavy_pr',
scale: 10000,
region: roi,
crs: 'EPSG:4326',
folder: 'test'
})
代码解释
该代码使用Google Earth Engine的JavaScript API来获取并处理降雨数据。下面是对代码的解释:
geometry
变量定义了一个点几何体,表示感兴趣区域的中心点。roi
变量使用filterBounds()
方法从FAO的Global Administrative Unit Layers数据集中筛选出与感兴趣区域边界相交的特征集合。Map.centerObject()
方法将地图视图居中于roi。Map.addLayer()
方法将roi添加到地图中。time_start
和time_end
变量定义了要筛选的时间范围。pr
变量从NASA的GPM降雨数据集中选择了降雨数据,并使用filterDate()
方法筛选出指定时间范围内的图像集合。time_dif
变量计算了时间范围的天数差。list
变量使用ee.List.sequence()
方法生成一个从0到time_dif
减去1的数字序列,表示每一天的索引。pr_daily
变量是一个图像集合,其中的每个图像代表每天的降雨总量。它使用map()
方法遍历list
中的每个索引,筛选出对应的时间范围内的降雨数据,并使用sum()
方法计算每天的降雨总量。Map.addLayer()
方法通过筛选出10月份的降雨数据,并以图像波段方式显示在地图上。ui.Chart.image.series()
方法通过对指定几何体和时间范围内的图像集合进行重采样(使用Reducer.first()
方法)生成时间序列图表。Export.image.toDrive()
方法将降雨数据导出为GeoTIFF图像文件,并保存到Google Drive指定的文件夹中。