GEE26:批量导出逐日、逐月、逐季节和逐年的遥感影像(以NDVI为例)

影像导出

  • 写在前面
  • 1.逐日数据导出
  • 2.逐月数据导出
  • 3.季节数据导出
  • 4.逐年数据导出

写在前面

  最近很多小伙伴们私信我,问我如何高效导出遥感数据,从逐日到逐季度,我都有一套自己的方法,今天就来和大家分享一下!
  🔍【逐日导出】:首先,逐日数据的导出其实很简单,只需要设置好时间参数,然后用For循环迭代,就可以轻松搞定。
  📅【逐月导出】:逐月数据稍微复杂一些,需要对月份进行分类,并且确保数据的连续性。
  📊【逐年导出】:逐年数据导出,关键在于数据的累积和汇总,通过设置年度参数,可以快速获取整年的数据。
  🌟【逐季度导出】:最后,我还额外整理了逐季度的导出方法,这对于需要季度分析的小伙伴们来说,绝对是个福音!
🌍🌍🌍如果你对这些方法感兴趣,或者在实际操作中遇到了困难,欢迎私信我,我会一一解答,让我们一起高效地处理遥感数据吧!

1.逐日数据导出

var imageCollection = ee.ImageCollection("MODIS/006/MOD13Q1");
var table = ee.FeatureCollection("users/cduthes1991/boundry/China_province_2019");
var roi = table.filter(ee.Filter.eq('provinces','hubei'));
Map.centerObject(roi,6.5)var styling = {color:"black",fillColor:"00000000"}
Map.addLayer(roi.style(styling),{},"geometry")var ndviVis = {min: 0,max: 8000,palette: ['ffffff', 'ce7e45', 'df923d', 'f1b555', 'fcd163', '99b718', '74a901','66a000', '529400', '3e8601', '207401', '056201', '004c00', '023b01','012e01', '011d01', '011301'],
};// ***************************************************************************************************
// 批量导出每幅影像
// ***************************************************************************************************
var imgCol = ee.ImageCollection("MODIS/061/MOD13Q1").filterDate('2022-1-1','2022-12-31').filterBounds(roi).select('NDVI').map(function(image){var imgsub = image;return image.clip(roi)//.multiply(0.0001)});
print(imgCol)// 创建一个函数来展示并导出图像
var showAndExportImage = function(image, index) {var date = ee.Date(image.get('system:time_start')).format('YYYY-MM-dd').getInfo();Map.addLayer(image.select('NDVI'), ndviVis, 'NDVI ' + date + ' (' + (index + 1) + ')', 0);Export.image.toDrive({image: image.select('NDVI'),description: 'NDVI_' + date + '_' + (index + 1),scale: 500,region: roi,maxPixels: 1e9});
};// 遍历图像集合并处理每幅图像
imgCol.toList(imgCol.size()).evaluate(function(imageList) {imageList.forEach(function(image, index) {var img = ee.Image(image.id).clip(roi);showAndExportImage(img, index);});
});

结果展示:
在这里插入图片描述

2.逐月数据导出

// ************************************************************************************************************
// 批量导出每月影像
// ************************************************************************************************************
var imgCol1 = ee.ImageCollection("MODIS/061/MOD13Q1").filterBounds(roi).select('NDVI').map(function(image) {return image.clip(roi);});var yearstart = 2022;
var yearend = 2023;
var monthstart = 1;
var monthend = 12;
for (var year = yearstart; year <= yearend; year++) {for (var month = monthstart; month <= monthend; month++) {var startDate = ee.Date.fromYMD(year, month, 1);var endDate = startDate.advance(1, 'month').advance(-1, 'day');var ndvi_month = imgCol1.filterDate(startDate, endDate).select('NDVI');var ndvi_mean = ndvi_month.median().clip(roi);var monthName = ee.Date(startDate).format('MMMM').getInfo();Map.addLayer(ndvi_mean, ndviVis, year + '_' + monthName + '_NDVI_median', 0);Export.image.toDrive({image: ndvi_mean,description: year + '_' + monthName + '_NDVI_median',folder: 'NDVI_Export',scale: 250,region: roi,maxPixels: 1e9,});}
}

结果展示:
在这里插入图片描述

3.季节数据导出

//************************************************************************************************************
// 批量导出每季度影像
//************************************************************************************************************
var imgCol2 = ee.ImageCollection("MODIS/061/MOD13Q1").filterBounds(roi).select('NDVI').map(function(image) {return image.clip(roi);});var yearstart = 2020;
var yearend = 2023;
var seasonDates = [{name: 'Spring', startMonth: 3, endMonth: 5},{name: 'Summer', startMonth: 6, endMonth: 8},{name: 'Autumn', startMonth: 9, endMonth: 11},{name: 'Winter', startMonth: 12, endMonth: 2}
];seasonDates.forEach(function(season) {for (var year = yearstart; year <= yearend; year++) {var startDate, endDate;if (season.startMonth === 12) { // 处理冬季跨年的情况startDate = ee.Date.fromYMD(year, season.startMonth, 1);endDate = ee.Date.fromYMD(year + 1, season.endMonth, 1).advance(1, 'month').advance(-1, 'day');} else {startDate = ee.Date.fromYMD(year, season.startMonth, 1);endDate = ee.Date.fromYMD(year, season.endMonth, 1).advance(1, 'month').advance(-1, 'day');}var ndvi_season = imgCol2.filterDate(startDate, endDate).select('NDVI');print('NDVI collection for ' + year + ' ' + season.name + ':', ndvi_season);if (ndvi_season.size().getInfo() === 0) {print('No data for ' + year + ' ' + season.name);continue;}var ndvi_mean = ndvi_season.median().clip(roi);Map.addLayer(ndvi_mean, ndviVis, year + '_' + season.name + '_NDVI_median', 0);Export.image.toDrive({image: ndvi_mean,description: year + '_' + season.name + '_NDVI_median',folder: 'NDVI_Export',scale: 250,region: roi,maxPixels: 1e9,});}
});

结果展示:
在这里插入图片描述

4.逐年数据导出

//************************************************************************************************************
// // 批量导出每年影像
//************************************************************************************************************
var imgCol3 = ee.ImageCollection("MODIS/061/MOD13Q1").filterBounds(roi).select('NDVI').map(function(image){var imgsub = image;return image.clip(roi)//.multiply(0.0001)});
print(imgCol)var yearstart = 2020;
var yearend = 2023;
for (var i = yearstart; i <= yearend; i++) {var ndvi_year = imgCol3.filterDate(i + '-01-01', i + '-12-31').select('NDVI');var ndvi_mean = ndvi_year.median().clip(roi);Map.addLayer(ndvi_mean, ndviVis, i + '_NDVI_median', 0);Export.image.toDrive({image: ndvi_mean,description: i + '_NDVI_median',folder: 'NDVI_Export',scale: 250,region: roi,maxPixels: 1e9,});
}

结果展示:
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

人工智能原理第十四章课后习题答案仅供参考

14.1 叙述演绎推理、归纳推理、以及溯因推理的基本概念、内在联系。并讨论为什么说这三者是主要的推理模式 演绎推理是根据已知的一般性、真实性的前提,通过推理得出个别结论的推理方法,简而言之是从一般到特殊的推理。 归纳推理是以个别实例为前提,推导出一般性结论的推理形…

缓存归纳总结1

1. 何时需要考虑缓存一致性 缓存一致性主要在以下情况需要特别考虑&#xff1a; 读多写少场景&#xff1a;当数据读取操作远多于写入时&#xff0c;为了提高系统性能&#xff0c;通常会将数据缓存起来。但一旦数据源&#xff08;如数据库&#xff09;中的数据发生变化&#xf…

基于YOLOv8+PySide6的快递分类管理系统

1、背景 随着电子商务的飞速发展&#xff0c;快递行业所承受的数据处理需求愈发庞大。在这样的背景下&#xff0c;传统的手工分类方法已经显得力不从心&#xff0c;因其不仅耗时耗力&#xff0c;还存在着易出错的隐患。因此&#xff0c;迫切需要研发出一套高效而准确的自动化系…

多线程案例(线程池)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f649; 内容推荐:<计算坤是如何工作的>&#x1f649; &#x1f439;今日诗词:百年兴衰皆由人, 不由天&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&…

路径规划搜路算法有哪些?

路径规划搜索算法是帮助移动机器人或自动化系统在环境中从起点导航至终点的计算方法。以下是一些常见的路径规划搜索算法&#xff1a; Dijkstra算法&#xff1a;一种经典的最短路径搜索算法&#xff0c;适用于没有负权边的图。 A*算法&#xff1a;一种启发式搜索算法&#xff…

go 微服务框架kratos使用中间件的方法

一、中间件的概念 在go语言中&#xff0c;中间件是一种用于处理http请求的开发模式&#xff0c;允许开发人员在请求到达处理程序之前或之后执行特定的操作&#xff0c;如日志记录、身份验证、错误处理等。 中间件通常是一个函数&#xff0c;它接收一个 http.Handler 作为参数…

Ardupilot开源代码之Rover上路 - 后续4

Ardupilot开源代码之Rover上路 - 后续4 1. 源由2. 深度配置2.1 设置倒车按钮2.1.1 前进2.1.2 倒退 2.2 MP无法连接ESP82662.3 最小油门校准 3. 遗留&后续3.1 高精度编码器问题3.2 OV5647 720P30FPS 马赛克问题 4. 参考资料 1. 源由 开源项目最主要的问题就是所有配置是开放…

Python模块方法总结

一 模块简介 模块&#xff08;module&#xff09;和C语言中的头文件以及Java中的包很类似&#xff0c;在Python中用关键字import来引入某个模块&#xff0c;比如要引用模块math&#xff0c;就可以在文件最开始的地方用import math来引入。 import math#这样会报错 print sqrt…

信息安全从运维到运营:CISAW安全运维方向

随着数据中心规模扩大&#xff0c;安全运维内生需要逐渐向安全运营进化&#xff0c;统一安全理念&#xff0c;提高服务意识&#xff0c;提升专业能力。安全运营是对安全运维的继承式发展&#xff0c;而不是颠覆&#xff0c;意味着以业务发展为基础&#xff0c;以事件核查为线索…

【gradle】MAC下用gradle构建部署springboot项目

MAC下用gradle构建部署springboot项目 前言下载安装配置gradle下载安装下载可能出现的问题 &#xff08;zsh: command not found: brew&#xff09; 配置环境变量配置国内下载源全局配置单个项目配置 通过idea构建项目构建后的项目结构 小结延伸 前言 好久以前就听说gradle了&…

RAG概述(一):RAG架构的演进

目录 概述 RAG核心步骤 Indexing索引 Retrieval检索 Generation生成​​​​​​​ Native RAG Advanced RAG Modular RAG 参考 概述 RAG&#xff1a;Retrieval-Augmented Generation 检索增强生成。 RAG通过结合LLMs的内在知识和外部数据库的非参数化数据&#xff…

vue实现图片懒加载

在src中创建一个directives文件夹在里面创建一个lazy.js文件 在main.js中引入 import lazy from ./directives/lazy app.directive(lazy, lazy) 在app.vue中 <script setup lang"ts"> import { RouterLink, RouterView } from vue-router import HelloWorl…

与MySQL的初相遇

&#x1f30e;初识MySQL 注&#xff1a;本文SQL语句只为了验证猜想&#xff0c;不会也不要紧。 文章目录&#xff1a; MySql开端 认识数据库       什么是数据库       主流数据库       MySQL的本质 MySQL基础使用       连接mysql服务器     …

Linux内存管理--系列文章肆

一、引子 上篇文章介绍了目标文件&#xff0c;也就是讲到编译过程中的汇编这个阶段。本篇要讲目标文件怎么变成一个可执行文件的&#xff0c;介绍编译过程中的链接。 链接主要分为两种&#xff0c;静态链接和动态链接。它们本质上的区别&#xff0c;是在程序的编译和运行过程中…

自动化您的任务——crewAI 初学者教程

今天&#xff0c;我写这篇文章是为了分享您开始使用一个非常流行的多智能体框架所需了解的所有信息&#xff1a;crewAI。 我将在这里或那里跳过一些内容&#xff0c;使本教程成为一个精炼的教程&#xff0c;概述帮助您入门的关键概念和要点 今天&#xff0c;我写这篇文章是为了…

【代码随想录训练营】【Day 31】【回溯-5】| Leetcode 491, 46, 47

【代码随想录训练营】【Day 31】【回溯-5】| Leetcode 491, 46, 47 需强化知识点 排列问题和组合分割子集问题的区别&#xff1a; 排列是讲究顺序的&#xff0c;不同顺序的组合是不同的&#xff0c;因此不能使用startIndex来限制选择顺序&#xff0c;需要used来判断是否已被选…

easy-rule规则引擎使用

简介 轻量级的规则引擎&#xff0c;易于学习的api 简单来说&#xff0c;规则引擎就是一个函数&#xff1a;yf(x1,x2,…,xn) 将业务代码和业务规则分离&#xff0c;解耦业务决策和业务代码的绑定关系 入门示例 依赖引入 <dependency><groupId>org.jeasy</grou…

页面<html>上多了一个滚动条,定位发现是<body>里面多了一个id为trans-tooltip的div

现象分析&#xff1a; 页面根标签html多了一个滚动条&#xff0c;发现body里面多了一个id为trans-tooltip的div&#xff0c;虽然width为0&#xff0c;height为0&#xff0c;但是其子元素还是有高度&#xff0c;占据了空间&#xff0c;最终导致了滚动条&#xff1b; 根本原因&…

C++ 并查集模板

搬运jiangly鸽鸽的板子 #include <iostream> #include <string> #include <vector> #include <numeric>struct DSU {std::vector<int> f, siz;DSU() {}DSU(int n) {init(n);}void init(int n) {f.resize(n);std::iota(f.begin(), f.end(), 0);s…

专业渗透测试 Phpsploit-Framework(PSF)框架软件小白入门教程(十三)

本系列课程&#xff0c;将重点讲解Phpsploit-Framework框架软件的基础使用&#xff01; 本文章仅提供学习&#xff0c;切勿将其用于不法手段&#xff01; 接上一篇文章内容&#xff0c;讲述如何进行Phpsploit-Framework软件的基础使用和二次开发。 我们&#xff0c;继续讲一…