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

2024-05-26 02:44

本文主要是介绍GEE批量导出逐日、逐月、逐季节和逐年的遥感影像(以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,});
}

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

在这里插入图片描述

这篇关于GEE批量导出逐日、逐月、逐季节和逐年的遥感影像(以NDVI为例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1003323

相关文章

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

前端导出Excel文件出现乱码或文件损坏问题的解决办法

《前端导出Excel文件出现乱码或文件损坏问题的解决办法》在现代网页应用程序中,前端有时需要与后端进行数据交互,包括下载文件,:本文主要介绍前端导出Excel文件出现乱码或文件损坏问题的解决办法,... 目录1. 检查后端返回的数据格式2. 前端正确处理二进制数据方案 1:直接下载(推荐)方案 2:手动构造

Ubuntu向多台主机批量传输文件的流程步骤

《Ubuntu向多台主机批量传输文件的流程步骤》:本文主要介绍在Ubuntu中批量传输文件到多台主机的方法,需确保主机互通、用户名密码统一及端口开放,通过安装sshpass工具,准备包含目标主机信... 目录Ubuntu 向多台主机批量传输文件1.安装 sshpass2.准备主机列表文件3.创建一个批处理脚

MySQL批量替换数据库字符集的实用方法(附详细代码)

《MySQL批量替换数据库字符集的实用方法(附详细代码)》当需要修改数据库编码和字符集时,通常需要对其下属的所有表及表中所有字段进行修改,下面:本文主要介绍MySQL批量替换数据库字符集的实用方法... 目录前言为什么要批量修改字符集?整体脚本脚本逻辑解析1. 设置目标参数2. 生成修改表默认字符集的语句3

JAVA实现亿级千万级数据顺序导出的示例代码

《JAVA实现亿级千万级数据顺序导出的示例代码》本文主要介绍了JAVA实现亿级千万级数据顺序导出的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 前提:主要考虑控制内存占用空间,避免出现同时导出,导致主程序OOM问题。实现思路:A.启用线程池

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了