简介
GEE图表——通过使用CHIRPS数据集计算并可视化2024年水年某区域的累计降水量
函数
ee.ImageCollection.fromImages(images)
Returns the image collection containing the given images.
Arguments:
images (List):
The images to include in the collection.
Returns: ImageCollection
代码解释
好的,以下是代码的详细解释:
### 代码解析
1. **导入CHIRPS数据集**:
```javascript
var chirpsDaily = ee.ImageCollection("UCSB-CHG/CHIRPS/DAILY");
```
这行代码导入了CHIRPS(Climate Hazards Group InfraRed Precipitation with Stations)日降水量数据集。2. **定义水年**:
```javascript
var startDate = ee.Date('2024-06-01');
var endDate = ee.Date('2024-09-30');
```
这里定义了水年的开始和结束日期,从2024年6月1日到2024年9月30日。3. **计算天数**:
```javascript
var days = endDate.difference(startDate, 'day');
var daysList = ee.List.sequence(1, days);
```
计算水年内的总天数,并生成一个从1到总天数的列表。4. **计算累计降水量**:
```javascript
var cumulativeImages = daysList.map(function(day) {
var begin = startDate;
var current = startDate.advance(day, 'day');
var filtered = chirpsDaily.filter(ee.Filter.date(begin, current));
var cumulativeImage = filtered.reduce(ee.Reducer.sum())
.set('system:time_start', current.millis());
return cumulativeImage;
});
```
- 使用`map()`函数遍历每一天。
- 对于每一天,过滤出从开始日期到当前日期的降水数据。
- 使用`reduce(ee.Reducer.sum())`计算该时间段内的累计降水量。
- 设置图像的时间戳。5. **创建图像集合**:
```javascript
var cumulativeCol = ee.ImageCollection.fromImages(cumulativeImages);
```
将累计降水量的图像列表转换为图像集合。6. **定义城市位置**:
```javascript
var point = ee.Geometry.Point(77.5946, 12.9716); // 正确的班加罗尔坐标
```
创建一个点,表示印度班加罗尔的地理位置,使用正确的经纬度。7. **绘制累计降水量图表**:
```javascript
var chart = ui.Chart.image.series({
imageCollection: cumulativeCol,
region: point,
reducer: ee.Reducer.mean(),
scale: 5566,
}).setOptions({
interpolateNulls: true,
lineWidth: 1,
pointSize: 3,
title: 'Cumulative Monsoon Rainfall at Bengaluru (2024)',
vAxis: {title: 'Cumulative Rainfall (mm)'},
hAxis: {title: 'Month', format: 'YYYY-MMM'}
});
print(chart);
```
- 创建图表,显示在指定区域(班加罗尔)内的累计降水量。
- 使用`reducer: ee.Reducer.mean()`计算平均值。
- 设置图表的样式和标题。### 总结
这段代码的目的是计算并可视化2024年水年某区域的累计降水量。通过使用CHIRPS数据集,我们能够获取该地区的降水数据,并生成相应的图表进行分析。
全代码
var chirpsDaily = ee.ImageCollection("UCSB-CHG/CHIRPS/DAILY");
var startDate = ee.Date('2024-06-01')
var endDate = ee.Date('2024-09-30')
var days = endDate.difference(startDate, 'day')
var daysList = ee.List.sequence(1, days)
var cumulativeImages = daysList.map(function(day) {
// Filter the collection from start date till the day of computatiton
var begin = startDate
var current = startDate.advance(day, 'day')
var filtered = chirpsDaily.filter(ee.Filter.date(begin, current))
// Use sum() to calculate total rainfall in the period
// Make sure to set the start_time for the image
var cumulativeImage = filtered.reduce(ee.Reducer.sum())
.set('system:time_start', current.millis())
return cumulativeImage
})
// 讲计算的每天数据凡在影像集合汇总
var cumulativeCol = ee.ImageCollection.fromImages(cumulativeImages)
// 创建一个研究去
var point = ee.Geometry.Point(107.5946, 32.9716)
// 图表绘制
var chart = ui.Chart.image.series({
imageCollection: cumulativeCol,
region: point,
reducer: ee.Reducer.mean(),
scale: 5566,
}).setOptions({
interpolateNulls: true,
lineWidth: 1,
pointSize: 3,
title: 'Cumulative Monsoon Rainfall at Bengaluru (2020)',
vAxis: {title: 'Cumulative Rainfall (mm)'},
hAxis: {title: 'Month', format: 'YYYY-MMM'}
});
print(chart);