GEE学习记录(四)基于NPP和GPP数据集产生NPP8天、月度数据

2023-11-08

GEE官网提供的GPP数据集有8天的,但是NPP都是以年为单位的,挺不友好的。此链接是对数据集的介绍(链接)。
想要产生NPP8天、月度的数据集,需要利用NPP年度数据和GPP八天数据进行计算,代码如下。参考链接
首先导入八天的GPP数据和年度的NPP数据:

GPP
MYD17A2H.006: Aqua Gross Primary Productivity 8-Day Global 500M 500m
NPP
MOD17A3HGF.006: Terra Net Primary Production Gap-Filled Yearly Global 500m

然后进行计算:

var startdate = ee.Date.fromYMD(2021,1,1);
var enddate = ee.Date.fromYMD(2021,12,31);
var nppCollection = npp.filterDate(startdate, enddate)
                       .filterBounds(region)
                       .select("Npp");
var gppCollection = gpp.filterDate(startdate, enddate)
                       .filterBounds(region)
                       .select("Gpp");
//print(nppCollection);
//print(gppCollection);
var myNpp = function(myimg){
     var d = ee.Date(myimg.get('system:time_start'));
     var y = d.get('year').toInt();
     var GPPy = ee.Image(gppCollection.filter(ee.Filter.calendarRange(y, y, 'year')).sum());
     var NPPy = ee.Image(nppCollection.filter(ee.Filter.calendarRange(y, y, 'year')).mean());
     var npp8 = myimg.expression('(GGP8 / GPPy) * NPPy', 
    {
        GGP8: myimg,
        GPPy: GPPy,
        NPPy: NPPy
    });
  
  return npp8.copyProperties(myimg,['system:time_start']);
};

var npp8Collection = ee.ImageCollection(gppCollection.map(myNpp));
print(npp8Collection);

这样产生的就说八天的NPP数据集(未进行比例变换)。
查看官网对两个数据集的介绍,变换的比例都是0.0001。
在这里插入图片描述
在这里插入图片描述
故进行比例变换:

function scale(image){ 
  return image.multiply(0.0001).set(image.toDictionary(image.propertyNames()));
}
 
var npp8=npp8Collection.map(scale);
print(npp8);

产生的npp8就是最终的八天数据集。在此基础上,因为老师要求我产生月度的NPP数据集,所以进行了月度合成。

var years = ee.List.sequence(2021, 2021);
var months = ee.List.sequence(1, 12);
var meanNpp =  ee.ImageCollection.fromImages(
  years.map(function (y) {
    return months.map(function(m) {
    return npp8.filter(ee.Filter.calendarRange(y,y, 'year')).filter(ee.Filter.calendarRange(m, m, 'month')).mean().set('year', y).set('month', m).set('system:time_start', ee.Date.fromYMD(y, m, 1).millis());
    });
  }).flatten()
);
print(meanNpp);
Map.addLayer(meanNpp.mean().clip(region),npp_viz,"npp");

和其他博主的一般合成代码不一样的一个地方就是加了millis(),不加的时候在后面导出会产生问题(真的研究了好久问题解决链接)。

ee.Date.fromYMD(y, m, 1).millis());

这样经过处理之后一年应该有46景的八天数据,12景的月度数据。
在这里插入图片描述
之后进行导出(导出以为很简单,结果一直出错,要么全黑,要么不是覆盖整个研究区),要想成功导出必须俩条件(虽然我也不知道为什么,反正成功导出,数据在Arcgis中查看也没有问题):
1、加上之前说的.millis()
2、对月度数据集进行裁剪(很离谱啊)
少一个就出问题,服了。
导出代码如下参考链接:这个是一个大牛写的批下载ImageCollection的方法,拿来直接用就行。

var batch = require('users/fitoprincipe/geetools:batch');
//这个就是裁剪,不进行这个导出就出错
//我想的是导出的时候反正有个region
//导出的时候裁剪不就行了吗,结果是NO
var clipped = meanNpp.map(function (image) {
  return image.clip(region);
});

// Download images for a set region
batch.Download.ImageCollection.toDrive(
                clipped,//图像
                'Gangcha', //文件夹
                {region: region,//研究区范围
                crs: 'EPSG:4326',//坐标系
                scale: 500,//分辨率
                maxPixels: 1e13,
                 type: 'float'});

在这里插入图片描述
运行之后有十二个run,为了一键运行,可参考链接
导出之后在ENVI中查看:对于1、2、11、12月份大面积都是0,我查看了GPP数据集,是本身就是0,并不是后续计算的问题。
八月份图像:
在这里插入图片描述

至此整个流程完成。全文链接。有不足的地方请及时指出,大家一起学习进步。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GEE学习记录(四)基于NPP和GPP数据集产生NPP8天、月度数据 的相关文章

  • 在 Angular 中使用 Vue 组件

    我有一个用 Vue 构建的项目 我想在 Angular 应用程序中重用 Vue 应用程序中的组件 这样我就不必从头开始重建每个组件 我在medium上看到了这个教程 如何在 Angular 应用程序中使用 Vue 2 0 组件 https
  • Oo 任何 IDE 中的 javascript 代码补全

    你知道有什么IDE可以自动完成这种代码吗 我这里有一个 javascript 类生成器 function var core bind function method scope if method instanceof Function t
  • 如何通过单击图像预览上的“x”从文件输入中删除图像?

    我目前有一个文件输入 一旦用户上传图像 就会显示图像预览 在图像预览上 有一个 x 可以从列表中删除图像预览 单击此 x 后 有什么方法可以从输入中的文件集中删除图像吗
  • 如何更改传单中功能集的样式?

    我正在看等值区域的例子 https leafletjs com examples choropleth https leafletjs com examples choropleth 这是他们使用的数据源 type Feature prop
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • Node js 使用中间件重定向进行过多重定向

    在我的 Node js 应用程序 我使用的是express 4 x 中 我想检查用户是否已登录 如果用户未登录 我想重定向到我的登录页面 然后我在中间件中这样做 服务器 js app use function req res next if
  • 在Javascript中按降序对字符串进行排序(最有效)?

    W3Schools 有这个例子 var fruits Banana Orange Apple Mango fruits sort fruits reverse 这是在 Javascript 中按降序对字符串进行排序的最有效方法吗 Updat
  • Jquery从下拉列表中获取所选值的id

    我有一个下拉列表 可以从数据库获取值 如下所示 get getJobs function jobs seljobs jobs var i 0 jobs forEach function n alert job id n id 32 67 4
  • 动画进度元素值

    我有一个progress元素 该元素如下所示 div class container div div div
  • 如何使用canvas.toDataURL()将画布保存为图像?

    我目前正在构建一个 HTML5 Web 应用程序 Phonegap 本机应用程序 我似乎不知道如何将画布保存为图像canvas toDataURL 有人可以帮我吗 这是代码 有什么问题吗 我的画布被命名为 canvasSignature J
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 仅一页 JavaScript 应用程序

    您是否尝试过单页 Web 应用程序 即浏览器仅从服务器 获取 一页 其余部分由客户端 JavaScript 代码处理 此类 应用程序页面 的一个很好的例子是 Gmail 对于更简单的应用程序 例如博客和 CMS 使用这种方法有哪些优点和缺点
  • 单击关闭按钮后不显示 Google 一键登录 UI

    我正在尝试按照本指南使新的谷歌一键登录工作 https developers google com identity one tap web https developers google com identity one tap web
  • Select2 下拉列表动态添加、删除和刷新项目

    这让我发疯 为什么 Select2 不能在其页面上实现清晰的方法或示例如何在 Select2 上进行简单的 CRUD 操作 我有一个 select2 从 ajax 调用获取数据
  • Nodejs mysql 获取正确的时间戳格式

    我在用着mysqljs https github com mysqljs mysql得到结果后sql我变得不同TimeStamp格式如下 created at Sat Jul 16 2016 23 52 54 GMT 0430 IRDT 但
  • 数据表日期范围过滤器

    如何添加日期范围过滤器 like From To 我开始进行常规搜索和分页等工作 但我不知道如何制作日期范围过滤器 我正在使用数据表 1 10 11 版本 My code var oTable function callFilesTable
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react
  • 如何在打字稿文件中导入没有定义文件的js库

    随着我们的项目变得越来越大 我想从 JavaScript 切换到 TypeScript 以帮助进行代码管理 然而 我们使用许多库作为 amd 模块 我们不想将其转换为 TypeScript 我们仍然想将它们导入 TypeScript 文件
  • 单击列表时使用 bootstrap Dropdown 防止下拉菜单消失

    我正在使用使用引导下拉菜单 http twitter github com bootstrap javascript html dropdowns生成下拉菜单 我想防止点击菜单时菜单消失 我已经实现了以下代码 但它不起作用 知道如何修复它吗
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没

随机推荐

  • rosserial_arduino 中文教程1:Arduino IDE设置

    rosserial arduino 中文教程 专栏 原文 http wiki ros org rosserial arduino Tutorials 说明 本教程逐步介绍如何设置Arduino IDE以使用rosserial 教程级别 BE
  • 用【花生壳】穿透内网主机运用dai搭建校园实现访问外网访问只有学校内网的教务系统

    小记 上次写CSDN还是去年7月份Steam被盗的时候 一晃1年的时间已经过去了 时间过的好快 这次折腾了一天半 写个CSDN记录一下 也算是一个分享 希望能帮得上有需要的朋友 本人学生一枚 现在正是各个学校期末考试出成绩的日子 Sadly
  • VulnHub-PWNOS: 2.0 (PRE-RELEASE)手动复现msf POC

    以下操作均在测试环境进行 遵纪守法 维护网络安全 此靶场可以直接使用msf getshell 这次我们尝试在不适用msf的情况下 通过分析msf用的poc 模拟我们拿到一个漏洞的poc 如何仿照利用 进行get shell 并root 靶场
  • 2021-07-17王汕7.18下周投资资讯7.19黄金原油周一价格涨跌分析及独家解套策

    期货原油下周行情分析 原油消息面解析 周五 7月16日 美原油小幅走高 油价周四下跌超1 人们预期将有更多原油进入市场 此前有消息称主要石油输出国组织 OPEC 产油国达成妥协 且美国燃料需求周度数据意外糟糕 美国上周原油库存大幅减少几乎没
  • GitHub如何发布自己的网站(详细教学)

    什么是GitHub GitHub是目前使用最多的社交代码托管平台 这是一个你可以玩和实验的地方 在这里你可以找到最令人难以置信的开源信息 新兴技术 特性和设计 这是一个学习新事物和参与的地方 任务一 那么如何通过GitHub发布网站呢 首先
  • 获取当前时间近8个季度

    import java util Calendar import java util Date public class DateTest public static void main String args Date now new D
  • 深入理解设计原则之里氏替换原则(LSP)【软件架构设计】

    系列文章目录 C 高性能优化编程系列 深入理解软件架构设计系列 深入理解设计模式系列 高级C 并发线程编程 LSP 里氏替换原则 系列文章目录 1 里氏替换原则的定义和解读 2 里氏替换原则可以用于哪些设计模式中 3 如何使用里氏替换原则来
  • Effective C++改善程序与设计的55个具体做法笔记

    Scott Meyers大师Effective三部曲 Effective C More Effective C Effective STL 这三本书出版已很多年 后来又出版了Effective Modern C More Effective
  • main.exe flag redefined:graceful

    goroutine 1 running flag FlagSet Var 0xc042032120 0xcd0960 0xd33499 0xa07f57 0x8 0xa1959f 0x21 D ITsoftware golang go sr
  • OpenSSL SSL_read: Connection was reset, errno 10054的解决方法

    前言 起因 执行git push 的时候遇到了 OpenSSL SSL read Connection was reset errno 10054 的错误提示 经过 这是服务器的SSL证书没有经过第三方机构的签署 所以报错 错误原因可能是网
  • struts2 下载文件报 “java.lang.IllegalStateException”异常

    有关struts2下载组件的具体介绍我就在此略过了 看此文的同志想必大多是碰到这样让人很是不爽的问题 下面就将该问题的最终解决办法介绍如下 问题概要 在struts2中使用result里type stream 的结果类型时 可以实现文件的下
  • 那些开发过程中需要遵守的开发规范

    入职公司三天 没干啥其他活 基本在配置本地环境和阅读相关文档 技术方面公司基本用的是主流的技术体系 入职后需要先阅读阿里的开发规范和其他的一些产研文档 今天整理一些平时需要关注的阿里规约和数据库开发规范 方便今后在开发过程中查阅 文章目录
  • js game (.^-^.)

    try 新手 可能会有点小问题 欢迎指出 var lc 10 var cl 12 var e 0 v new Array for var i 0 i lt 25 i var a Math random cl 1 lc lc点 a a 100
  • 创建Umi项目

    关于Umi的网站 点开百度搜索umi 注意 浏览器直接搜索和百度搜索打开的官网是有区别的 百度会优先打开国内的网站 准备工作 首先得有node 版本要在14以上 后面是用yarn安装 所以没有yarn包管理器 安装下载一个 1 全局安装ya
  • hbuilder开发uniapp配置安卓模拟器

    安卓模拟器使用的是蓝蝶模拟器 配置如下 然后打开蓝蝶模拟器软件 点击设置 点击引擎设置 勾选允许AADB连接 各个模拟器端口配置 模拟器名称 连接默认端口 夜神安卓模拟器夜神安卓模拟器 62001 逍遥安卓模拟器逍遥安卓模拟器 21503
  • 拦截器HandlerInterceptorAdapter使用方法

    一 Interceptor定义 拦截器是在面向切面编程中应用的 就是在你的service或者一个方法前调用一个方法 或者在方法后调用一个方法 是基于JAVA的反射机制 1 拦截器 Interceptor 执行顺序 1 请求到达 Dispat
  • 用div来代替table

    用div来代替table 概述 实战 概述 table是我们日常开发中经常用到的HTML标签 但我们也经常因为table饱受折磨 原生的table的样式丑出天际 第三方框架的样式可能样式是好看点了 但可能并不是我们想要的样子 面对这些情况
  • [Matlab科学绘图] 由欧拉角绘制极图和反极图

    因为科研需要 需要自己仿真产生一些晶粒方向 并对其进行极图和反极图展示 在小木虫上找到一个matlab工具包mtex 利用此工具包可以绘制极图和反极图 但是并没有现成的程序可供参考 于是自己摸索出可以利用欧拉角绘制极图和反极图 记录于此供大
  • 【手把手教你】使用DoWhy做因果推断分析

    引言 因果推断是一种统计和哲学框架 旨在从数据中识别变量之间的因果关系 而不仅仅是相关性或关联 换句话说 它试图解答 如果我做X 会发生什么 这类问题 而非仅仅描述 X与Y有关联 这种观察性的信息 在金融量化中 因果推断的应用相当重要 金融
  • GEE学习记录(四)基于NPP和GPP数据集产生NPP8天、月度数据

    GEE官网提供的GPP数据集有8天的 但是NPP都是以年为单位的 挺不友好的 此链接是对数据集的介绍 链接 想要产生NPP8天 月度的数据集 需要利用NPP年度数据和GPP八天数据进行计算 代码如下 参考链接 首先导入八天的GPP数据和年度