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获取流域内的月均降水量【降水量分析】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/qq_32497109/article/details/123014103
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/375782

相关文章

Java Spring 中的监听器Listener详解与实战教程

《JavaSpring中的监听器Listener详解与实战教程》Spring提供了多种监听器机制,可以用于监听应用生命周期、会话生命周期和请求处理过程中的事件,:本文主要介绍JavaSprin... 目录一、监听器的作用1.1 应用生命周期管理1.2 会话管理1.3 请求处理监控二、创建监听器2.1 Ser

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Linux中的more 和 less区别对比分析

《Linux中的more和less区别对比分析》在Linux/Unix系统中,more和less都是用于分页查看文本文件的命令,但less是more的增强版,功能更强大,:本文主要介绍Linu... 目录1. 基础功能对比2. 常用操作对比less 的操作3. 实际使用示例4. 为什么推荐 less?5.

MQTT SpringBoot整合实战教程

《MQTTSpringBoot整合实战教程》:本文主要介绍MQTTSpringBoot整合实战教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录MQTT-SpringBoot创建简单 SpringBoot 项目导入必须依赖增加MQTT相关配置编写

spring-gateway filters添加自定义过滤器实现流程分析(可插拔)

《spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔)》:本文主要介绍spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔),本文通过实例图... 目录需求背景需求拆解设计流程及作用域逻辑处理代码逻辑需求背景公司要求,通过公司网络代理访问的请求需要做请

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

通过cmd获取网卡速率的代码

《通过cmd获取网卡速率的代码》今天从群里看到通过bat获取网卡速率两段代码,感觉还不错,学习bat的朋友可以参考一下... 1、本机有线网卡支持的最高速度:%v%@echo off & setlocal enabledelayedexpansionecho 代码开始echo 65001编码获取: >

Java集成Onlyoffice的示例代码及场景分析

《Java集成Onlyoffice的示例代码及场景分析》:本文主要介绍Java集成Onlyoffice的示例代码及场景分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 需求场景:实现文档的在线编辑,团队协作总结:两个接口 + 前端页面 + 配置项接口1:一个接口,将o

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

Redis迷你版微信抢红包实战

《Redis迷你版微信抢红包实战》本文主要介绍了Redis迷你版微信抢红包实战... 目录1 思路分析1.1hCckRX 流程1.2 注意点①拆红包:二倍均值算法②发红包:list③抢红包&记录:hset2 代码实现2.1 拆红包splitRedPacket2.2 发红包sendRedPacket2.3 抢