GEE必须会教程—蒸散发数据时间序列分析与下载

news2024/11/25 6:33:54

今天带来的有关蒸散发数据的下载代码,蒸散发数据在气象气候,农业干旱监测等领域应用广泛,那么在GEE上如何方便快捷获取蒸散发数据呢?今天跟着小编分享代码,快来学习吧!!

A.定义研究区域

//定义研究区域 
var geometry = ee.FeatureCollection('users/hesuixinya511/ganzhou');
//聚焦研究区域 
Map.centerObject(geometry,6); 

这里小编以赣州市作为研究区域。

B.影像调用与数据筛选

//加载MODIS蒸发量数据,按照2001-2020年赣州市的研究区域范围完成数据筛选和裁剪  
var collection = ee.ImageCollection('MODIS/006/MOD16A2')
                  .filter(ee.Filter.date('2001-01-01', '2023-12-31'))
                  .filterBounds(geometry)
                  .select('ET');//选择PET(潜在蒸发量)波段数据 

小编选择的是MODIS的数据产品,为MOD16A2,该数据产品提供ET、PET等近20年的数据,以下显示的是该数据的波段信息,我们挑了ET即总的蒸散发作为例子:

C.年度蒸发量数据合成

//合成年总蒸发量数据
var years = ee.List.sequence(2001, 2023);
var collectYear = ee.ImageCollection(years
  .map(function(y) {
    var start = ee.Date.fromYMD(y, 1, 1);
    var end = start.advance(12, 'month');
    return collection.filterDate(start, end).reduce(ee.Reducer.sum()).float().set('system:time_start',y).set('year',y);
}));
print(collectYear);

D.影像批量裁剪

//利用赣州市的行政边界裁剪蒸散发数据
var clip_Collection=collectYear.map(function(img){
  return img.clip(geometry);
});
print(clip_Collection);

E.影像的可视化

var palettes = require('users/gena/packages:palettes');
var evapotranspirationVis = {
  min: 0,
  max: 300,
  palette: palettes.colorbrewer.RdYlBu[11]
};
Map.addLayer(clip_Collection.median(), evapotranspirationVis, 'Evapotranspiration');

F.年度时间序列展示

//时间序列展示
var Yearly_Chart = ui.Chart = ui.Chart.image.series({
  imageCollection:clip_Collection.select("ET_sum"),
  region:geometry,
  reducer:ee.Reducer.mean(),
  scale:500,
  xProperty:"year",
}).setOptions({
  interpolateNulls:true,
  lineWidth:2,
  pontSize:3,
  title:"PET Yearly Series",
  vAxis:{title:"PET"},
  hAxis:{title:"Date"},
  trendlines:{0:{title:"PET_trend",type:"linear",showR2:true,color:"red"
  ,visibleInLegend:true}}
});
print(Yearly_Chart);

G.影像批量下载

//定义下载影像函数 
function exportImage(image, region, fileName) {  
   Export.image.toDrive({  
      image: image,  
      description: "Drive-"+fileName,//影像名称   
      fileNamePrefix: fileName,  
      folder: "GanzhouET",  //文件夹名称 
      scale: 500,  
      region: region,  
      maxPixels: 1e13,  
      crs: "EPSG:4326"  
  });  
}
//生成时间序列按照循环迭代下载数据集的每一张影像 
var indexList = clip_Collection.reduceColumns(ee.Reducer.toList(), ["system:index"]).get("list");  
print("indexList", indexList);  
indexList.evaluate(function(indexs) {  
 for (var i=0; i<indexs.length; i++) {  
       var image = clip_Collection.filter(ee.Filter.eq("system:index", indexs[i]))
             .first();  
       exportImage(image, geometry, "20"+indexs[i+1]);  
  }  
}); 

H.导出为CSV格式

//导出为CSV格式
var table = ee.FeatureCollection(clip_Collection.map(function(image){
  var date = image.get("year");
  return ee.Feature(null,{
    "date":date,
    "value":image.reduceRegion(ee.Reducer.mean(),geometry,500).get("ET_sum")
  });
}));
Export.table.toDrive({
  collection:table,
  description:"Yearly_series",
  folder:"ET",
  fileNamePrefix:"ET_Year",
  fileFormat:"CSV"
});

I.本篇案例完整代码

//定义研究区域 
var geometry = ee.FeatureCollection('users/hesuixinya511/ganzhou');
//聚焦研究区域 
Map.centerObject(geometry,6); 
//加载MODIS蒸发量数据,按照2001-2020年赣州市的研究区域范围完成数据筛选和裁剪  
var collection = ee.ImageCollection('MODIS/006/MOD16A2')
                  .filter(ee.Filter.date('2001-01-01', '2023-12-31'))
                  .filterBounds(geometry)
                  .select('ET');//选择PET(潜在蒸发量)波段数据 
//合成年总蒸发量数据
var years = ee.List.sequence(2001, 2023);
var collectYear = ee.ImageCollection(years
  .map(function(y) {
    var start = ee.Date.fromYMD(y, 1, 1);
    var end = start.advance(12, 'month');
    return collection.filterDate(start, end).reduce(ee.Reducer.sum()).float().set('system:time_start',y).set('year',y);
}));
print(collectYear);
//利用赣州市的行政边界裁剪蒸散发数据
var clip_Collection=collectYear.map(function(img){
  return img.clip(geometry);
});
print(clip_Collection);
var palettes = require('users/gena/packages:palettes');
var evapotranspirationVis = {
  min: 0,
  max: 300,
  palette: palettes.colorbrewer.RdYlBu[11]
};
Map.addLayer(clip_Collection.median(), evapotranspirationVis, 'Evapotranspiration');
//时间序列展示
var Yearly_Chart = ui.Chart = ui.Chart.image.series({
  imageCollection:clip_Collection.select("ET_sum"),
  region:geometry,
  reducer:ee.Reducer.mean(),
  scale:500,
  xProperty:"year",
}).setOptions({
  interpolateNulls:true,
  lineWidth:2,
  pontSize:3,
  title:"PET Yearly Series",
  vAxis:{title:"PET"},
  hAxis:{title:"Date"},
  trendlines:{0:{title:"PET_trend",type:"linear",showR2:true,color:"red"
  ,visibleInLegend:true}}
});
print(Yearly_Chart);
//定义下载影像函数 
function exportImage(image, region, fileName) {  
   Export.image.toDrive({  
      image: image,  
      description: "Drive-"+fileName,//影像名称   
      fileNamePrefix: fileName,  
      folder: "GanzhouET",  //文件夹名称 
      scale: 500,  
      region: region,  
      maxPixels: 1e13,  
      crs: "EPSG:4326"  
  });  
}
//生成时间序列按照循环迭代下载数据集的每一张影像 
var indexList = clip_Collection.reduceColumns(ee.Reducer.toList(), ["system:index"]).get("list");  
print("indexList", indexList);  
indexList.evaluate(function(indexs) {  
 for (var i=0; i<indexs.length; i++) {  
       var image = clip_Collection.filter(ee.Filter.eq("system:index", indexs[i]))
             .first();  
       exportImage(image, geometry, "20"+indexs[i+1]);  
  }  
}); 
//导出为CSV格式
var table = ee.FeatureCollection(clip_Collection.map(function(image){
  var date = image.get("year");
  return ee.Feature(null,{
    "date":date,
    "value":image.reduceRegion(ee.Reducer.mean(),geometry,500).get("ET_sum")
  });
}));
Export.table.toDrive({
  collection:table,
  description:"Yearly_series",
  folder:"ET",
  fileNamePrefix:"ET_Year",
  fileFormat:"CSV"
});

关于GEE下载蒸散发数据的代码到这里就结束了,如果对你有帮助,不要忘记了给小编点赞哦!

代码链接:https://code.earthengine.google.com/c1c7de2ae0a8a4992f4fe1051b71ec98

谢谢大家!!下期再见!!

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

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

相关文章

力扣每日一题 受限条件下可到达节点的数目 DFS

Problem: 2368. 受限条件下可到达节点的数目 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 灵神 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code class Solution {int ans 0;boolean[] set;List<Integer>[] es;publ…

【Python】2. 基础语法

常量和表达式 我们可以把 Python 当成一个计算器, 来进行一些算术运算. 注意: print 是一个 Python 内置的 函数, 这个稍后详细介绍. 可以使用 - * / ( ) 等运算符进行算术运算. 先算乘除, 后算加减. 运算符和数字之间, 可以没有空格, 也可以有多个空格. 但是一般习惯上写一…

【兔子机器人】根据自身机器人参数修改simulink模型

关节电机 机体初始高度 &#xff01;&#xff01;&#xff01;接下来尝试修改各腿的坐标朝向

USB - Linux Kernel Menuconfig

Linux kernel&#xff0c;make menuconfig&#xff0c;和USB相关的&#xff0c;在主菜单选择Device Drivers。 Device Drivers下面&#xff0c;找到USB support。 在USB support下面&#xff0c;就可以对USB相关的item进行设置。 按照从上到下的顺序&#xff0c;打开的设置依次…

nginx,php-fpm

一&#xff0c;Nginx是异步非阻塞多进程&#xff0c;io多路复用 1、master进程&#xff1a;管理进程 master进程主要用来管理worker进程&#xff0c;具体包括如下4个主要功能&#xff1a; &#xff08;1&#xff09;接收来自外界的信号。 &#xff08;2&#xff09;向各worker进…

Scrapy与分布式开发(1.1):课程导学

Scrapy与分布式开发&#xff1a;从入门到精通&#xff0c;打造高效爬虫系统 课程大纲 在这个专栏中&#xff0c;我们将一起探索Scrapy框架的魅力&#xff0c;以及如何通过Scrapy-Redis实现分布式爬虫的开发。在本课程导学中&#xff0c;我们将为您简要介绍课程的学习目标、内容…

php儿童服装销售管理系统计算机毕业设计项目包运行调试

php mysql儿童服装销售网 功能&#xff1a;前台后台 前台&#xff1a; 1.服装资讯 文章标题列表 详情 2.服装选购中心 分页查看图文列表 详情 3.用户注册 登陆 退出 4.服装加入收藏 5.加入购物车 6.对服装进行评论 会员中心&#xff1a; 1.我的账户 查看 修改 2.我的收藏 查看 …

Linux shell:补充命令的使用

目录 一.导读 二.正文 三.结语 一.导读 上一篇介绍了脚本的简单概念以及使用&#xff0c;现在补充一些命令。 二.正文 目前处于全局目录&#xff0c;通过mkdir创建名我为day01的文件。 通过cd命令day01 切换至day01文件当中。 使用vim文本编辑器文件名&#xff08;firstdir&…

【JavaEE】_前端使用GET请求的queryString向后端传参

目录 1. GET请求的query string 2. 关于query string的urlencode 1. GET请求的query string 1. 在HttpServletRequest请求中&#xff0c;getParameter方法用于在服务器这边获取到请求中的参数&#xff0c;主要在query string中&#xff1b; query string中的键值对都是程序…

接口详细说明

接口概述 接口也是一种规范 接口的定义与特点 接口的格式如下&#xff1a; //接口用关键字interface来定义 public interface 接口名 {// 常量// 抽象方法 } JDK8之前接口中只能是抽象方法和常量&#xff0c;没有其他成分了。 接口不能实例化。 接口中的成员都是public修…

[Redis]——初识Redis

一、Redis为非关系型数据库 ❓我们常见的MySQL、SQLServer都是关系型数据库&#xff0c;那他们之间有什么区别与联系呢&#xff1f; &#x1f4d5;关系型数据库与非关系型数据库的区别&#xff08;面试题&#xff09; 解释&#xff1a; SQL数据库中的表是有结构的&#xff0c;包…

DataIntegrityViolationException异常产生原因及解决方案

DataIntegrityViolationException异常产生原因及解决方案 01 异常的发生场景 在我新写了一个接口之后出现的 //org.springframework.dao.DataIntegrityViolationException日志报错的意思是参数设置了一个错误的值 02 异常的产生及其原因 我最开始认为是MySQL数据库表设计…

ShardingJdbc实战-分库分表

文章目录 基本配置分库分表的分片策略一、inline 行表达时分片策略algorithm-expression行表达式完整案例和配置如下 二、根据实时间日期 - 按照标准规则分库分表标准分片 - Standard完整案例和配置如下 基本配置 逻辑表 逻辑表是指&#xff1a;水平拆分的数据库或者数据表的相…

应用层http协议包解析与https加密策略解析

文章目录 一.应用层协议--http协议基础认知二.https协议加密策略解析加密策略1--通信双方只使用对称加密加密策略2--通信双方使用单方非对称加密加密策略3--通信双方都使用非对称加密加密策略4--非对称加密与对称加密配合使用中间人攻击数据签名与CA证书HTTPS数据安全认证的本质…

Java基于SpringBoot网上超市的设计与实现论文

摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管理就很关键。因此超市商品销售信…

外贸业务员没客户的7大原因+解决办法!

业务员没有客户&#xff0c;就是无源之水&#xff0c;无本之木&#xff0c;这自然也就没有业绩。那些吃空饷的业务员&#xff0c;迟早会拖垮公司。所以不管是什么原因导致的业务员没客户&#xff0c;都要一一查验清楚。七个业务员没有客户的原因&#xff0c;七种对策&#xff0…

小朋友来自多少小区 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 幼儿园组织活动&#xff0c;老师布置了一个任务&#xff1a; 每个小朋友去了解与自己同一个小区的小朋友还有几个。 我们将这些数量汇总到数组 garden 中。 请…

IEEE754标准的c语言阐述,以及几个浮点数常量

很多年前&#xff0c;调研过浮点数与整数之间的双射问题&#xff1a; win7 intel x64 cpu vs2013 c语言浮点数精度失真问题 最近重新学习了一下IEEE754标准&#xff0c;也许实际还有很多深刻问题没有被揭示。 计算机程序设计艺术&#xff0c;据说这本书中也有讨论。 参考&…

uni-app去除页面头部的标题栏

uniapp项目 每个界面都会有一个标题栏 配置在我们项目根目录的 pages.json中 我们将它全部去掉 上面还是有一条黑的 体验非常差 我们只需要在pages.json中 指定page的 style中加入 "navigationStyle": "custom"对应的page 就没有这个标题栏了

Spring 源码解析

文章目录 前言相关Spring的定义接口整体代码StartupStep contextRefresh this.applicationStartup.start("spring.context.refresh")prepareRefresh()obtainFreshBeanFactory()registerBeanPostProcessors(beanFactory)SpringAOP原码流程EnableAspectJAutoProxyAnno…