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,
  });
}

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于51单片机的数字频率计(电路图+pcb+论文+仿真+源码)

于51单片机的数字频率计 设计的频率计范围能够达到1HZ-1MHZ(实际上51单片机达不到这个范围&#xff0c;不要在实验环境下进行)&#xff0c;这个是课设来着&#xff0c;用Proteus仿真实现的&#xff0c;给有需要的同学参考一下 仿真原理图如下&#xff08;proteus仿真工程文件可…

方言和大语言模型

方言多样性及其对语言模型的影响 语言的演变是不可避免的&#xff0c;反映并推动了重大的社会变革和传统。语言接触往往会推动我们说话方式的创新&#xff0c;在美国全球文化的影响下&#xff0c;一种新的叙事正在其语言织锦中展开。 例如&#xff0c;在佛罗里达州南部&#…

使用FFmpeg推流实现在B站24小时点歌直播

使用FFmpeg推流实现在B站24小时点歌直播 本文首发于个人博客 安装FFmpeg centos7 https://www.myfreax.com/how-to-install-ffmpeg-on-centos-7/ https://linuxize.com/post/how-to-install-ffmpeg-on-centos-7/ 使用FFmpeg在B站直播 https://zhuanlan.zhihu.com/p/2395…

内外网文件传输安全可控的方式有哪些?这几款软件值得参考

在信息化时代&#xff0c;随着企业对网络安全和数据保护需求的日益增强&#xff0c;内外网隔离已成为一种常见的网络安全策略。内外网隔离旨在防止未经授权的访问和数据泄露&#xff0c;确保企业网络的安全稳定。然而&#xff0c;在实施内外网隔离的同时&#xff0c;如何实现文…

记录使用 Vue3 过程中的一些技术点

1、自定义组件&#xff0c;并使用 v-model 进行数据双向绑定。 简述&#xff1a; 自定义组件使用 v-model 进行传参时&#xff0c;遵循 Vue 3 的 v-model 机制。在 Vue 3 中&#xff0c;v-model 默认使用了 modelValue 作为 prop 名称&#xff0c;以及 update:modelValue 作为…

springboot错误

错误总结 1、使用IDEA 的 initialalzer显示2、IDEA 新建文件 没有 java class3、java: 错误: 不支持发行版本 22解决方法4、IDEA-SpringBoot项目yml配置文件不自动提示解决办法 1、使用IDEA 的 initialalzer显示 IDEA创建SpringBoot项目时出现&#xff1a;Initialization fail…

【C++】类与对象——多态详解

目录 一、多态的定义 二、重载、覆盖(重写)、隐藏(重定义)的对比 三、析构函数重写 四、C11 override 和 final 1. final 2. override 五、抽象类 六、多态的原理 一、多态的定义 多态是在不同继承关系的类对象&#xff0c;去调用同一函数&#xff0c;产生了不同的行为…

MySQL的数据库和表

查看数据库 命令行的方式&#xff1a; cd /mysql/bin mysql.exe -uroot -p IP&#xff08;不是连接自己&#xff09; 端口&#xff08;不是3306&#xff09; show databases; 直接使用图形化界面点击&#xff1a; 查看库里的表 使用命令行查看&#xff1a; 进入mysql数据库 u…

基于高通公司AI Hub Models的On-Device AI学习:Introduction to On-Device AI

Introduction to On-Device AI 本文是学习 https://www.deeplearning.ai/short-courses/introduction-to-on-device-ai/这门课的学习笔记。 What you’ll learn in this course As AI moves beyond the cloud, on-device inference is rapidly expanding to smartphones, IoT…

从 0 实现一个文件搜索工具 (Java 项目)

背景 各文件系统下, 都有提供文件查找的功能, 但是一般而言搜索速度很慢 本项目仿照 everything 工具, 实现本地文件的快速搜索 实现功能 选择指定本地目录, 根据输入的信息, 进行搜索, 显示指定目录下的匹配文件信息文件夹包含中文时, 支持汉语拼音搜索 (全拼 / 首字母匹配…

java在类的定义中创建自己的对象?

当在main方法中新建自身所在类的对象&#xff0c;并调用main方法时&#xff0c;会不断循环调用main方法&#xff0c;直到栈溢出 package com.keywordStudy;public class mainTest {static int value 33;public static void main(String[] args) throws Exception{String[] sn…

营销短信XML接口对接发送示例

在现代社会中&#xff0c;通信技术日新月异&#xff0c;其中&#xff0c;短信作为一种快速、简便的通信方式&#xff0c;仍然在日常生活中占据着重要的地位。为了满足各种应用场景的需求&#xff0c;短信接口应运而生&#xff0c;成为了实现高能有效通信的关键。 短信接口是一种…

从机械尘埃到智能星河:探索从工业心脏到AI大脑的世纪跨越(一点个人感想)...

全文预计1400字左右&#xff0c;预计阅读需要8分钟。 近期&#xff0c;人工智能领域呈现出前所未有的活跃景象&#xff0c;各类创新成果如雨后春笋般涌现&#xff0c;不仅推动了科技的边界&#xff0c;也为全球经济注入了新的活力。 这不&#xff0c;最近报道16家国内外企业在A…

【铨顺宏RFID技术闪耀登场】广交会与您共绘智慧新篇章!

激动人心的时刻即将来临&#xff01;广交会作为中国最重要的综合性国际贸易盛会&#xff0c;每年都吸引着来自世界各地的参展商和观众。今年&#xff0c;我们铨顺宏公司也荣幸地参与其中&#xff0c;并将在广交会上展示我们最新的RFID技术产品。 &#x1f4cd;地点&#xff1a;…

Android Studio添加依赖 新版 和 旧版 的添加方式(Gradle添加依赖)(Java)

旧版的&#xff08;在线添加&#xff09; 1找 文件 在项目的build.gradle文件中添加依赖(在下面的节点中添加库 格式 ’ 组 &#xff1a;名字 &#xff1a; 版本号 ‘ ) dependencies {implementation com.example:library:1.0.0 }implementation 组:名字:版本…

网段与广播域

ip地址与子网掩码做与运算得到网络号&#xff0c;得到的网络号相同就是同一个网段&#xff0c;否则不是&#xff0c;跟他们在什么位置没有任何关系 这里面pc3和前两个pc虽然不在同一个网段&#xff0c;但是pc1发广播包的时候&#xff0c;pc3也能收到&#xff0c;因为路由器的所…

相关服务器介绍

服务器是一种高性能的计算机&#xff0c;它被设计用来为其他计算机或终端设备提供服务&#xff0c;如数据处理、文件存储、网络通信等。服务器通常具有强大的计算能力、大容量的存储空间和高效的网络连接能力。 常见的服务器种类及其特点 文件服务器 文件服务器主要负责中央存储…

[OpenGL] opengl切线空间

目录 一 引入 二 TBN矩阵 三 代码实现 3.1手工计算切线和副切线 3.2 像素着色器 3.3 切线空间的两种使用方法 3.4 渲染效果 四 复杂的物体 本章节源码点击此处 继上篇法线贴图 来熟悉切线空间是再好不过的。对于法线贴图来说,我们知道它就是一个2D的颜色纹理,根据rgb…

qmt量化教程4----订阅全推数据

文章链接 qmt量化教程4----订阅全推数据 (qq.com) 上次写了订阅单股数据的教程 量化教程3---miniqmt当作第三方库设置&#xff0c;提供源代码 全推就主动推送&#xff0c;当行情有变化就会触发回调函数&#xff0c;推送实时数据&#xff0c;可以理解为数据驱动类型&#xff0…

并发编程笔记7--并发编程基础

1、线程简介 1.1、什么是线程 现代操作系统中运行一个程序&#xff0c;会为他创建一个进程。而每一个进程中又可以创建许多个线程。现代操作系统中线程是最小的调度单元。 两者关系&#xff1a;一个线程只属于一个进程&#xff0c;而一个进程可以拥有多个线程。线程是一个轻量…