GEE实战1:利用GEE获取流域内的月均降水量【降水量分析】

2023-11-09 11:20

本文主要是介绍GEE实战1:利用GEE获取流域内的月均降水量【降水量分析】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • GEE实战系列之降水量分析:
  1. GEE实战1:利用GEE获取流域内的月均降水量【降水量分析】
  2. GEE实战2:利用GEE获取流域内的年总降水量【降水量分析】

(持续更新中……)


 1、目标

利用GEE,获取流域内的月均降水量,或者月均降水量的最大值、最小值、平均值?

2、实现步骤



llhydrosheds.org拥有区域和全球范围应用的水文信息数据。

第 1 步:下载此文件并将其摄取到地球引擎: 盆地

步骤2:导入数据并将数据添加到地图中。

Step 3 : 使用inspector 选择一个流域。

var myBasin = basins.filter(ee.Filter.eq("BASIN_ID",420525));

第 4 步:设置感兴趣的期间。

// variables for start and end year
var startyear = 2000;
var endyear = 2016; // variables for start and end month
var startmonth = 1;
var endmonth = 1;// define start and end date
var startdate = ee.Date.fromYMD(startyear,startmonth,1);
var enddate = ee.Date.fromYMD(endyear+1,endmonth,1);// create list for years
var years = ee.List.sequence(startyear,endyear);

第5步:导入啁啾并过滤时间段。

// select precipitation for time range
var P = chirps.filterDate(startdate, enddate)// Sort chronologically in descending order..sort('system:time_start', false)

第6步:导入chirps并过滤时间段。
 

// select precipitation for time range
var P = chirps.filterDate(startdate, enddate)// Sort chronologically in descending order..sort('system:time_start', false)

第 7 步:包括以下代码段以计算年降水量。我们在哪里需要什么?最小值、最大值、平均值、总和?
 

// calculate yearly P
var yearlyP =  ee.ImageCollection.fromImages(years.map(function (y) {var w = P.filter(ee.Filter.calendarRange(y, y, 'year')).???();return w.set('year', y).set('date', ee.Date.fromYMD(y,1,1)).set('system:time_start',ee.Date.fromYMD(y,1,1)); }));

第 8 步:现在我们将设置图像和条形图的可视化。
 

// set visualizaton parameters
var p_viz = {min:0.0, max:2400, palette:"000000,0000FF,FDFF92,FF2700,FF00E7"};// Predefine the chart titles.
var title = {title: 'Yearly precipitation',hAxis: {title: 'Time'},vAxis: {title: 'Precipitation (mm)'},
};

第 9 步 我们根据年降水量数据创建图表,使用盆地多边形作为区域,并使用缩减器来计算该区域的平均降水量。
 

var chart = ui.Chart.image.seriesByRegion(yearlyP,myBasin, ee.Reducer.mean(), 'precipitation', 2500, 'system:time_start', 'SITE')
.setOptions(title)
.setChartType('ColumnChart');

第 9 步:显示结果。我们在哪里需要什么?最小值、最大值、平均值、总和?
 

// plot the chart
print(chart)// center the map
Map.centerObject(myBasin, 5);// plot the map
Map.addLayer(yearlyP.mean().clip(myBasin),p_viz, "mean yearly P")

 3、完整代码

(1)JavaScrip代码

Map.addLayer(myBasin,{},"my basin");// variables for start and end year
var startyear = 2000;
var endyear = 2016; // variables for start and end month
var startmonth = 1;
var endmonth = 1;// define start and end date
var startdate = ee.Date.fromYMD(startyear,startmonth,1);
var enddate = ee.Date.fromYMD(endyear+1,endmonth,1);// create list for years
var years = ee.List.sequence(startyear,endyear);// select precipitation for time range
var P = chirps.filterDate(startdate, enddate)// Sort chronologically in descending order..sort('system:time_start', false)// calculate yearly P
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)); }));// set visualizaton parameters
var p_viz = {min:0.0, max:3400, palette:"000000,0000FF,FDFF92,FF2700,FF00E7"};// Predefine the chart titles.
var title = {title: 'Yearly precipitation',hAxis: {title: 'Time'},vAxis: {title: 'Precipitation (mm)'},
};var chart = ui.Chart.image.seriesByRegion(yearlyP,myBasin, ee.Reducer.mean(), 'precipitation', 2500, 'system:time_start', 'SITE').setOptions(title).setChartType('ColumnChart');// plot the chart
print(chart)

(2)python代码

(3)结果如下

4、小结

  1.  使用 sum() 计算每个月的总降水量
  2. 使用 mean() 计算月平均降水量。


参考:

  • https://mygeoblog.com/2018/09/30/precipitation-in-river-basin/

这篇关于GEE实战1:利用GEE获取流域内的月均降水量【降水量分析】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/375782

相关文章

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

SpringBoot UserAgentUtils获取用户浏览器的用法

《SpringBootUserAgentUtils获取用户浏览器的用法》UserAgentUtils是于处理用户代理(User-Agent)字符串的工具类,一般用于解析和处理浏览器、操作系统以及设备... 目录介绍效果图依赖封装客户端工具封装IP工具实体类获取设备信息入库介绍UserAgentUtils

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt