GEE14:提取每年的GPP最大值

news2025/1/23 14:00:19

获取GPP最大值

    • 1. 数据介绍
    • 2. JavaScript代码

最近学习了关于获取每年GPP最大值的DOY(day of year)的方法:

1. 数据介绍

MOD17A2H v006:
The MOD17A2H Version 6 Gross Primary Productivity (GPP) product is a cumulative 8-day composite of values with 500 meter (m) pixel size based on the radiation use efficiency concept that can be potentially used as inputs to data models to calculate terrestrial energy, carbon, water cycle processes, and biogeochemistry of vegetation. The data product includes information about GPP and Net Photosynthesis (PSN). The PSN band values are the GPP less the Maintenance Respiration (MR). The data product also contains a PSN Quality Control (QC) layer. The quality layer contains quality information for both the GPP and the PSN.

在这里插入图片描述

2. JavaScript代码

已将代码进行了注释,方便读者学习和理解

// 数据导入:MOD17A2H.006,时间分辨率为8天,空间分辨率为500米
var gpp = ee.ImageCollection("MODIS/006/MOD17A2H");
print("gpp", gpp)

// 在2010-2022年间,提取每年的GPPmax,并输出GPPmax对应的DOY(day of year)
// 从开始到结束(包括)以等距增量生成一个数字序列
var start_year = 2010;
var end_year = 2022;
var yearList = ee.List.sequence(start_year,end_year);
print("yearList", yearList)

// 用map函数对yearList进行循环
// map函数一般计算最快,表示:并行执行任务,能用 map,就用 map
var yearImgList = yearList.map(function(year)
{
  year = ee.Number(year);
  // 将ImageCollection里面的Image按年进行处理
  var tempCol = gpp.filter(ee.Filter.calendarRange(year,year,'year'))
             .map(function(image)
             {  
               // 获取每个图像的开始时间
               var time_start = image.get("system:time_start");  
               var date = ee.Date(time_start);  
               // 计算DOY 
				   // 这一部分使用date对象的format方法将日期转换为字符串, 并使用参数"D"指定格式化字符串。
				   // "D"表示将日期转换为一个两位数的字符串表示,表示一年中的第几天。
				   // 例如,1月1日对应的是"001",12月31日对应的是"365"或"366"(闰年)。
               var doy = ee.Number.parse(date.format("D")).toInt(); 
               // 生成包含DOY的图像
               var doyImg = ee.Image.constant(doy).toInt16().rename("doy"); 
               // 原图像加上doy波段
               image = image.addBands(doyImg);  
               // 返回只包含Gpp和DOY 2个波段的图像
               return image;
                })
                .select(["Gpp", "doy"]);
  // 提取每一年Gpp的最大值及相应的doy,输出为List
  // reduce函数对图像集合进行降维操作:
  var img = tempCol.reduce(  
  // 这是一个降维器(reducer),用于计算每个像素在时间序列中的最大值
  // 参数2表示沿着时间轴(第二个轴)进行降维操作
  // 例如,对于每个像素位置,将从图像集合中选择具有最大Gpp值的图像。
  ee.Reducer.max(2)   
    .setOutputs(["gppmax", "doy"])); // 设置降维操作的输出名称
  img = img.set('year', year); // 将year属性添加到img图像中。year是当前年份,用于标识图像是哪一年的结果。
  img = img.set('system:index', ee.String(year.toInt())); // 用于将图像索引设为年份的字符串表示
  return img;
});
print("yearImgList", yearImgList)

// 查看第一个图像(从0开始计数)
Map.addLayer(ee.Image(yearImgList.get(0)))


// 获取List的图像的数量,并通过getInfo()获取相应的属性信息
var count = yearImgList.size().getInfo();
print("count", count)

// 批量导出所有图像
for(var i=0; i<count; i++)
{
  // 获取图像的id属性作为文件名的一部分
  var image = ee.Image(yearImgList.get(i)); 
  var id = image.id();
  var name = "GPPmax_"+id.getInfo();
  // 结果输出
  Export.image.toDrive({
    image: image, 
    description: 'imageToCOGeoTiff',
    fileNamePrefix: name,
    scale: 500, // 空间分辨率为500m
    maxPixels: 1e13,
    fileFormat: 'GeoTIFF',
    formatOptions: {
      cloudOptimized: true
    }
  }); 
}

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

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

相关文章

soundtouch库的编译与使用

源码下载 https://gitlab.com/soundtouch/soundtouch/-/archive/2.1.2/soundtouch-2.1.2.tar.bz2 SDK配置 使用vs逐个打开source下指定的三个项目文件&#xff0c;修改SDK&#xff0c;因为可能库中使用的是8.0&#xff0c;你使用的10.0 编译 打开vs&#xff0c;打开终端&am…

图像处理简介

目录 基本术语 1 .图像(image) 1.1 像素(Pixel) 1.2 颜色深度&#xff08;Color Depth&#xff09; 1.3 分辨率&#xff08;Resolution&#xff09; 1.4 像素宽高比&#xff08;Pixel Aspect Ratio&#xff09; 1.5 帧率(FPS) 1.6 码率&#xff08;BR&#xff09; 1. …

基于Stable Diffusion的AIGC服饰穿搭实践

本文主要介绍了基于Stable Diffusion技术的虚拟穿搭试衣的研究探索工作。文章展示了使用LoRA、ControlNet、Inpainting、SAM等工具的方法和处理流程&#xff0c;并陈述了部分目前的实践结果。通过阅读这篇文章&#xff0c;读者可以了解到如何运用Stable Diffusion进行实际操作&…

ScreenToGif-动图制作软件实用操作

ScreenToGif官网&#xff1a;ScreenToGif ⭕第一步&#xff1a;启动页面 ⭕第二步&#xff1a;选项 &#x1f95d;录像机-捕获频率选择手动-播放延迟1000ms(可以任意) ⭕第三步&#xff1a;录像机开始录屏 &#x1f95d;我们调整录屏的大小后&#xff0c;打开画图&#xff0c…

HK1 RBOX X4,Vontar X4,S905 X4 刷 ATV

准备工作 需要HK1 RBOX X4一个&#xff08;内存版本不限 通刷&#xff09;&#xff0c;机顶盒电源&#xff0c;USB双公线一条&#xff08;可以使用两个usb数据线剪开后相同颜色对接使用&#xff0c;最好使用电烙铁焊接一下更稳定&#xff09;&#xff0c;安装 INTEL CPU 运行 w…

Empowering Long-tail Item Recommendation through Cross Decoupling Network (CDN)

Empowering Long-tail Item Recommendation through Cross Decoupling Network (CDN) 来源&#xff1a; KDD’2023Google Research 文章目录 Empowering Long-tail Item Recommendation through Cross Decoupling Network (CDN)长尾问题分析CDNItem Memorization and General…

【算法】leetcode 105 从前序与中序遍历序列构造二叉树

题目 输入某二叉树的前序遍历和中序遍历的结果&#xff0c;请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 示例 1: Input: preorder [3,9,20,15,7], inorder [9,3,15,20,7] Output: [3,9,20,null,null,15,7]示例 2: Input: pr…

可控生成之GLIGEN原理

🤗关注公众号 funNLPer 快乐白嫖🤗 论文:GLIGEN: Open-Set Grounded Text-to-Image Generation 代码:gligen/GLIGEN 项目地址:GLIGEN demo地址:gligen demo 文章目录 1. 动机2. 模型结构及原理2.1 输入处理2.1.1 Caption Tokens2.1.2 Grounding Tokens2.2 Gated Sel…

应急三维电子沙盘数字孪生系统

一、简介应急三维电子沙盘数字孪生系统是一种基于虚拟现实技术和数字孪生技术的应急管理工具。它通过将真实世界的地理环境与虚拟世界的模拟环境相结合&#xff0c;实现了对应急场景的模拟、分析和决策支持。该系统主要由三维电子沙盘和数字孪生模型两部分组成。三维电子沙盘是…

ROS-5.自定义topic消息格式

自定义topic消息格式 1. 定义消息1.1. 定义msg文件1.2. 在package.xml中添加功能包依赖1.3. 在CMakeList.txt添加编译选项1.4. 编译 2.定义发布者和订阅者2.1 定义发布者2.2. 定义订阅者2.3. 修改CMakeList.txt2.4 编译 3. 使用消息3.1 启动ros主程序3.2. 启动发布者3.3 启动订…

处理时延降低24倍,联通云粒数据引擎优化实践

*作者&#xff1a;郑扬勇&#xff0c;云粒星河数据中台产品负责人 云粒智慧科技有限公司成立于 2018 年 6 月&#xff0c;是中国联通集团混改以来成立的首家合资公司&#xff0c;是中国智慧城市数智化建设者。一直以来&#xff0c;云粒智慧以数字化、智能化、集约化产品为核心&…

[杂谈]-2023年实现M2M的技术有哪些?

2023年实现M2M的技术有哪些&#xff1f; 文章目录 2023年实现M2M的技术有哪些&#xff1f;1、寻找连接2、M2M与IoT3、流行的 M2M 协议 在当今的数字世界中&#xff0c;机器对机器 (M2M) 正在迅速成为标准。 M2M 包括使联网设备能够交换数据或信息的任何技术。 它可以是有线或无…

关于已经安装了TorchCRF,导入时却提示“ModuleNotFoundError: No module named ‘torchcrf‘”的解决办法

应用python时&#xff0c;想导入torchcrf库 from torchcrf import CRF 但系统提示&#xff1a;ModuleNotFoundError: No module named torchcrf 在命令提示符里输入“pip list”检查已安装库&#xff0c;发现torchcrf已经安装 搞了半天&#xff0c;发现是大小写的问题&#x…

2023.9 - java - 浅拷贝

与 js的浅拷贝不同&#xff1a; 在 JavaScript 中&#xff0c; Object.assign() 或 spread 运算符等方法可以实现浅拷贝&#xff0c;但只针对对象的第一层属性进行复制。如果一个对象只包含基本数据类型的属性&#xff0c;那么对浅拷贝出来的对象进行修改不会影响原始对象&…

Spring IOC的理解

总&#xff1a; 控制反转&#xff08;IOC&#xff09;&#xff1a;理论思想&#xff0c;传统java开发模式&#xff0c;对象是由使用者来进行管理&#xff0c;有了spring后&#xff0c;可以交给spring来帮我们进行管理。依赖注入&#xff08;DI&#xff09;&#xff1a;把对应的…

React笔记(四)类组件(2)

一、类组件的props属性 组件中的数据&#xff0c;除了组件内部的状态使用state之外&#xff0c;状态也可以来自组件的外部&#xff0c;外部的状态使用类组件实例上另外一个属性来表示props 1、基本的使用 在components下创建UserInfo组件 import React, { Component } from…

OpenCV基本操(IO操作,读取、显示、保存)

图像的IO操作&#xff0c;读取和保存方法 1.1 API cv.imread()参数&#xff1a; 要读取的图像 读取图像的方式&#xff1a; cv.IMREAD*COLOR:以彩色模式加载图像&#xff0c;任何图像的图像的透明度都将被忽略。这是默认参数 标志&#xff1a; 1 cv.IMREAD*GRAYSCALE :以…

【进阶之路】pytest自动化测试框架从0-1精通实战

前言 1、运行方式 命令行模式&#xff1a; pytest -s login.py主函数模式&#xff1a; if __name__ __main__:pytest.main(["-s", "login.py"])pytest.ini运行&#xff1a; 在 pytest.ini 文件中配置 pytest 的运行参数。 注意点&#xff1a; 位置&…

车载监管模块项目需求分析报告

目录 1 文档说明.......................................................................................... 4 2 参考文件.......................................................................................... 4 3 概述.......................................…

真机安装Linux Centos7

准备工具&#xff1a; 8G左右U盘最新版UltraISOCentOS7光盘镜像 操作步骤 下载镜像 地址&#xff1a;http://isoredirect.centos.org/centos/7/isos/x86_64/ 安装刻录工具UltraISO&#xff0c;刻录镜像到U盘 ① 选择ISO镜像文件 ② 写入磁盘镜像&#xff0c;在这里选择你的U盘…