GEE16: 区域日均降水量计算

news2024/11/19 7:41:41

Precipitation

    • 1. 区域日均降水量计算
    • 2. 降水时间序列
    • 3. 降水数据年度时间序列对比分析

1. 区域日均降水量计算

今天分析一个计算区域日均降水量的方法:

数据信息:
  Climate Hazards Group InfraRed Precipitation with Station data (CHIRPS) is a 30+ year quasi-global rainfall dataset. CHIRPS incorporates 0.05° resolution satellite imagery with in-situ station data to create gridded rainfall time series for trend analysis and seasonal drought monitoring.

在这里插入图片描述

var startDate = ee.Date('2022-01-01');
var endDate = ee.Date('2023-01-01');

// 以重庆为目标
var geometry = ee.FeatureCollection('projects/ee-*****736/assets/Chongqing_Province')
Map.centerObject(geometry,5)
var styling = {color:"red",fillColor:"00000000"}
Map.addLayer(geometry.style(styling),{},"geometry")
var geometry = geometry.geometry()

var dataset = ee.ImageCollection("UCSB-CHG/CHIRPS/DAILY")
  .filterDate(startDate, endDate);

var list_dataset = dataset.toList(dataset.size());
print(list_dataset);

// 计算区域内的日平均值
var getPrecipitation = function(image) {
  var value_precipit = ee.Image(image)
    .reduceRegion(ee.Reducer.mean(), geometry)
    .get('precipitation');
  var precipit_mm = ee.Number(value_precipit); 
  return precipit_mm;
};

// 输出每日平均降水量(mm)
var count = dataset.size();
var precipit_list = dataset.toList(count).map(getPrecipitation);
print("precipitation list", precipit_list);

// 输出所有日期
var allDates = ee.List(dataset.aggregate_array('system:time_start'));
var allDatesSimple = allDates.map(function(date){
  return ee.Date(date).format().slice(0,10);
  });
print('allDates',allDatesSimple);

// 将日期与降水数据组合
var paired = allDatesSimple.zip(precipit_list);
print (paired);

var title = {
  title: 'Daily precipitation',
  hAxis: {title: 'Time'},
  vAxis: {title: 'Precipitation (mm)'},
};

// 构建日平均降水量图表
var chartDaily = ui.Chart.image.seriesByRegion({
  imageCollection: dataset, 
  regions: geometry,
  reducer: ee.Reducer.mean(),
  band: 'precipitation',
  scale: 5566,
  xProperty: 'system:time_start',
  seriesProperty: 'SITE'
}).setOptions(title)
  .setChartType('ColumnChart');
print(chartDaily);

// 将日平均降水量输出CSV文件
var myFeatures = ee.FeatureCollection(paired.map(function(el){
  el = ee.List(el); // cast every element of the list
  var geom = geometry;
  return ee.Feature(null, {
    'date': ee.String(el.get(0)),
    'value':ee.Number(el.get(1))
  });
}));

// Export features, specifying corresponding names.
Export.table.toDrive(myFeatures,
"precipitation", //my task
"GEE_Folder", //my export folder
"daily_precipit",  //file name
"CSV");

结果展示:
在这里插入图片描述

2. 降水时间序列

var geometry = ee.FeatureCollection('projects/ee-*****736/assets/Chongqing_Province')
Map.centerObject(geometry ,6)
var CHIRPS= ee.ImageCollection('UCSB-CHG/CHIRPS/PENTAD');


var precip = CHIRPS.filterDate('2022-01-01', '2022-12-31');
var precip1year=CHIRPS.filterDate('2020-01-01', '2022-12-31');

var TS1 = Chart.image.series(precip, geometry, ee.Reducer.mean(),5566, 'system:time_start').setOptions({
          title: 'Precipitation Full Time Series',
          vAxis: {title: 'mm/pentad'},
});
print(TS1);

var TS2 = Chart.image.series(precip1year, geometry,  ee.Reducer.mean(),5566, 'system:time_start').setOptions({
          title: 'Precipitation 1-Year Time Series',
          vAxis: {title: 'mm/pentad'},
});
print(TS2);

结果展示:

在这里插入图片描述
在这里插入图片描述

3. 降水数据年度时间序列对比分析

// 研究区域边界可视化
var geometry = ee.FeatureCollection('projects/ee-*****736/assets/Chongqing_Province')
Map.centerObject(geometry);
var styling = {color:'red',fillColor:'00000000'}
Map.addLayer(geometry.style(styling),{},'roi')

var dataset = ee.ImageCollection('UCSB-CHG/CHIRPS/DAILY')
                  .filter(ee.Filter.date('2017-01-01', '2023-10-01'))
                  .select('precipitation')
                  .filterBounds(geometry)
                  .map(function(image){
                    return image.clip(geometry)
                  });


var Chart1 = ui.Chart.image.doySeriesByYear({
		imageCollection:dataset,
		bandName:'precipitation',
  	region:geometry,
  	regionReducer:ee.Reducer.mean(),
  	scale:5566,
})
print('每年的降水量走势',Chart1)


// 计算每月的平均值
// 自行修改起始年份即可
var years = ee.List.sequence(2017, 2023);
var months = ee.List.sequence(1, 12);
var Monthlymean = ee.ImageCollection(years
  .map(function(y) {
    return months.map(function(m) {
    var perc = dataset
                .filter(ee.Filter.calendarRange(y,y, 'year'))
                .filter(ee.Filter.calendarRange(m, m, 'month'))
                .mean()
                .clip(geometry)
    return perc.set('system:time_start',ee.Date.fromYMD(y,m,1))
                .set('system:index',ee.String(ee.Number(y).int()).cat("_").cat(ee.String(ee.Number(m).int())))
    })
    }).flatten());
print('月平均数据集',Monthlymean)

var Chart2 = ui.Chart.image.doySeriesByYear({
		imageCollection:Monthlymean,
		bandName:'precipitation',
  	region:geometry,
  	regionReducer:ee.Reducer.mean(),
  	scale:5566,
})
print('每年的月度降水量走势',Chart2)

结果展示:
每年的降水量走势:
在这里插入图片描述

每年的月度降水量走势:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1062586.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国庆假期作业6

一、ARM的工作模式 1、非特权模式 user模式:非特权模式,大部分任务执行在这种模式 2、特权模式 异常模式: FIQ : 当一个快速(fast) 中断产生时将会进入这种模式 IRQ : 当一个通用(normal) 中断产生时将会进入这种模式…

物联网系统中物模型定义的简要说明

物模型由若干条“参数”组成,参数按描述的功能类型不同,又分为属性、方法和事件。 标准参数 为了实现设备功能的统一理解。 说的直白一些的理解,可以这样去理解: 属性,就是定义的由设备端规律性的定期上报的数据。 事件,就是定…

【在凸多边形的图像中查找顶点】估计具有已知顶点数的像素化凸多边形角点研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

2.2.3.1vim + ctags + cscope + taglist

在window下,我们一般用Source Insight来查看代码而在linux下,使用vim来查看代码,vim是一个简单的文本浏览/编辑器,它可以通过插件的形式,搭建一个完全的类Source Insight环境,通过快捷键的形式,快速查看、定位变量/函数,本文就是基于vim,通过ctags+cscope+taglist+Ner…

剑指offer——JZ77 按之字形顺序打印二叉树 解题思路与具体代码【C++】

一、题目描述与要求 按之字形顺序打印二叉树_牛客题霸_牛客网 (nowcoder.com) 题目描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 数据范围&#x…

【计算机视觉|人脸建模】学习从4D扫描中获取的面部形状和表情的模型

本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处 标题:Learning a model of facial shape and expression from 4D scans 链接:Learning a model of facial shape and expression from 4D scans | ACM Transactions on Graphics Pe…

【网络】抓包工具Wireshark下载安装和基本使用教程

🍁 博主 "开着拖拉机回家"带您 Go to New World.✨🍁 🦄 个人主页——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的帮助&#x1…

Qt + FFmpeg 搭建 Windows 开发环境

Qt FFmpeg 搭建 Windows 开发环境 Qt FFmpeg 搭建 Windows 开发环境安装 Qt Creator下载 FFmpeg 编译包测试 Qt FFmpeg踩坑解决方法1:换一个 FFmpeg 库解决方法2:把项目改成 64 位 后记 官方博客:https://www.yafeilinux.com/ Qt开源社区…

小程序入门笔记(一) 黑马程序员前端微信小程序开发教程

微信小程序基本介绍 小程序和普通网页有以下几点区别: 运行环境:小程序可以在手机的操作系统上直接运行,如微信、支付宝等;而普通网页需要在浏览器中打开才能运行。 开发技术:小程序采用前端技术进行开发,…

Interference Signal Recognition Based on Multi-Modal Deep Learning

系统结构 基于决策的融合实际上是用损失函数监督融合模型 其中 N N N是训练样本的数量 体会 作者未解释公式4的 t i t_i ti​的含义且不公布代码

[尚硅谷React笔记]——第3章 React应用(基于React脚手架)

目录: react脚手架创建项目并启动react脚手架项目结构一个简单的Hello组件样式的模块化功能界面的组件化编码流程(通用)组件的组合使用-TodoList 1.react脚手架 xxx脚手架: 用来帮助程序员快速创建一个基于xxx库的模板项目 包含了所有需…

ctfshow web入门 php特性 web131-web135

1.web131 和上题一样差不多,正则最大回溯次数绕过 import requests url"" data{f:very*250000360Dctfshow } rrequests.post(url,datadata) print(r.text)2.web132 通过扫描发现robots.txt,访问/admin发现源码 &&和||都是短路运算符 只要满足co…

【LittleXi】【MIT6.S081-2020Fall】Lab: locks

【MIT6.S081-2020Fall】Lab: locks 【MIT6.S081-2020Fall】Lab: locks内存分配实验内存分配实验准备实验目的1. 举一个例子说明修改前的**kernel/kalloc.c**中如果没有锁会导致哪些进程间竞争(races)问题2. 说明修改前的kernel/kalloc.c中锁竞争contention问题及其后果3. 解释a…

使用Jest测试Cesium源码

使用Jest测试Cesium源码 介绍环境Cesium安装Jest安装Jest模块包安装babel安装Jest的VSC插件 测试例子小结 介绍 在使用Cesium时,我们常常需要编写自己的业务代码,其中需要引用Cesium的源码,这样方便调试。此外,目前代码中直接使用…

状态机-状态规划(309. 买卖股票的最佳时机含冷冻期)

class Solution {public int maxProfit(int[] prices) {int n prices.length;if(n 0 || n 1)return 0;int f[][] new int[n][2]; //f[i][0 || 1]表示持有/未持有 第i只股票f[0][0] 0;f[0][1] 0 - prices[0];for(int i 1; i < n;i){f[i][0] Math.max(f[i - 1][0],f[i…

专题一:双指针【优选算法】

双指针应用场景&#xff1a; 数组划分、数组分块 目录 一、移动0 二、复写0 从后向前 三、快乐数 链表带环 四、盛水最多的容器 单调性双指针 五、有效三角形个数 单调性双指针 六、和为s的两个数字 七、三数之和 细节多 需再练 一、移动0 class Solution { public:void move…

前端 | AjaxAxios模块

文章目录 1. Ajax1.1 Ajax介绍1.2 Ajax作用1.3 同步异步1.4 原生Ajax 2. Axios2.1 Axios下载2.2 Axios基本使用2.3 Axios方法 1. Ajax 1.1 Ajax介绍 Ajax: 全称&#xff08;Asynchronous JavaScript And XML&#xff09;&#xff0c;异步的JavaScript和XML。 1.2 Ajax作用 …

SPI 通信协议

1. SPI通信 1. 什么是SPI通信协议 2. SPI的通信过程 在一开始会先把发送缓冲器的数据&#xff08;8位&#xff09;。一次性放到移位寄存器里。 移位寄存器会一位一位发送出去。但是要先放到锁存器里。然后从机来读取。从机的过程也一样。当移位寄存器的数据全部发送完。其实…

【Unity3D编辑器开发】Unity3D编辑器开发基础性框架结构【全面总结】

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 嗨&#xff0c;大家好&#xff0c;我是恬静的小魔龙。 同学们…

open62541学习:文件传输

作为一种通信协议&#xff0c;文件传输是非常重要的。例如传输执行程序&#xff0c;图片&#xff0c;配置文件等等。文件传输的机制和类型在 OPC UA 中已经存在很长时间了。FileType &#xff08;作为ObjectType&#xff09;和ImageType长期以来一直是内置模型的一部分&#xf…