GEE开发之Modis_NDVI数据分析获取大总结

news2025/8/7 14:37:53

GEE开发之Modis_NDVI数据分析获取大总结

  • 0. 之前的博客链接
  • 1. MYD13Q1(250米/16天)
  • 2. MOD09GA_006_NDVI(500米/1天)
  • 3. MOD13Q1(250米/16天)
  • 4. MOD13A1(500米/16天)
  • 5. MOD13A2(1000米/16天)
  • 6. 日数据下载(以MYD13Q1为例子)
  • 7. 月数据下载(以MYD13Q1为例子)
    • 7.1 代码一
    • 7.2 代码二(简洁)
  • 8. 年数据下载(以MYD13Q1为例子)
    • 8.1 代码一
    • 8.2 代码二(简洁)

前言:主要总结一下在GEE上获取Modis_NDVI数据的各种形式,主要包括MYD13Q1、MOD09GA、MOD13Q1、MOD13A1、MOD13A2以及日数据、月数据、年数据的获取和下载。

0. 之前的博客链接

之前总结的Modis_NDVI数据分析的博客链接如下:
《GEE开发之Modis_NDVI的数据分析》
《GEE开发之MODIS_NDVI年均值数据分析》
《GEE开发之MODIS_NDVI一年之中的所有数据获取》

1. MYD13Q1(250米/16天)

//以鹿邑为例子 
var geometry = ee.FeatureCollection('users/www1573979951/luyixian');
Map.centerObject(geometry,6);
//选取影像集以及波段 NDVI
var ndvi = ee.ImageCollection("MODIS/006/MYD13Q1").filterDate('2020-01-01', '2020-12-31').filterBounds(geometry).select("NDVI");
//换算单位
var multiply = function(image){ 
 var img = image.multiply(0.0001);  
 return img.set('system:time_start',image.get('system:time_start'));
};
ndvi = ndvi.map(multiply);
print(ndvi);
//设置调色板并展示影像
var colorizedVis = {min: 0.0,  max: 1.0,  palette: ['FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901', '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',  '012E01', '011D01', '011301']};
Map.addLayer(ndvi.median().clip(geometry), colorizedVis, 'NDVI');//2020年NDVI的均值

在这里插入图片描述
此图是鹿邑县2020年NDVI的均值
在这里插入图片描述

2. MOD09GA_006_NDVI(500米/1天)

//以鹿邑为例子 
var geometry = ee.FeatureCollection('users/www1573979951/luyixian');
Map.centerObject(geometry,6);
//选取影像集以及波段 NDVI
var ndvi = ee.ImageCollection("MODIS/MOD09GA_006_NDVI").filterDate('2020-01-01', '2020-12-31').filterBounds(geometry).select("NDVI");
print(ndvi);
//设置调色板并展示影像
var colorizedVis = {min: 0.0,  max: 1.0,  palette: ['FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901', '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',  '012E01', '011D01', '011301']};
Map.addLayer(ndvi.median().clip(geometry), colorizedVis, 'NDVI');//2020年NDVI的均值

在这里插入图片描述
在这里插入图片描述

3. MOD13Q1(250米/16天)

//以鹿邑为例子 
var geometry = ee.FeatureCollection('users/www1573979951/luyixian');
Map.centerObject(geometry,6);
//选取影像集以及波段 NDVI
var ndvi = ee.ImageCollection("MODIS/006/MOD13Q1").filterDate('2020-01-01', '2020-12-31').filterBounds(geometry).select("NDVI");
//换算单位
var multiply = function(image){ 
  var img = image.multiply(0.0001);  
  return img.set(image.toDictionary(image.propertyNames()));
};
ndvi = ndvi.map(multiply);
print(ndvi);
//设置调色板并展示影像
var colorizedVis = {min: 0.0,  max: 1.0,  palette: ['FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901', '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',  '012E01', '011D01', '011301']};
Map.addLayer(ndvi.median().clip(geometry), colorizedVis, 'NDVI');

在这里插入图片描述
在这里插入图片描述

4. MOD13A1(500米/16天)

//以鹿邑为例子 
var geometry = ee.FeatureCollection('users/www1573979951/luyixian');
Map.centerObject(geometry,6);
//选取影像集以及波段 NDVI
var ndvi = ee.ImageCollection("MODIS/006/MOD13A1").filterDate('2020-01-01', '2020-12-31').filterBounds(geometry).select("NDVI");
//换算单位
var multiply = function(image){ 
  var img = image.multiply(0.0001);  
  return img.set(image.toDictionary(image.propertyNames()));
};
ndvi = ndvi.map(multiply);
print(ndvi);
//设置调色板并展示影像
var colorizedVis = {min: 0.0,  max: 1.0,  palette: ['FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901', '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',  '012E01', '011D01', '011301']};
Map.addLayer(ndvi.median().clip(geometry), colorizedVis, 'NDVI');

在这里插入图片描述
在这里插入图片描述

5. MOD13A2(1000米/16天)

//以鹿邑为例子 
var geometry = ee.FeatureCollection('users/www1573979951/luyixian');
Map.centerObject(geometry,6);
//选取影像集以及波段 NDVI
var ndvi = ee.ImageCollection("MODIS/006/MOD13A2").filterDate('2020-01-01', '2020-12-31').filterBounds(geometry).select("NDVI");
//换算单位
var multiply = function(image){ 
  var img = image.multiply(0.0001);  
  return img.set(image.toDictionary(image.propertyNames()));
};
ndvi = ndvi.map(multiply);
print(ndvi);
//设置调色板并展示影像
var colorizedVis = {min: 0.0,  max: 1.0,  palette: ['FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901', '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',  '012E01', '011D01', '011301']};
Map.addLayer(ndvi.median().clip(geometry), colorizedVis, 'NDVI');//NDVI均值显示

在这里插入图片描述
在这里插入图片描述

6. 日数据下载(以MYD13Q1为例子)

//以鹿邑为例子 
var geometry = ee.FeatureCollection('users/www1573979951/luyixian');
Map.centerObject(geometry,6);
//选取影像集以及波段 NDVI
var ndvi = ee.ImageCollection("MODIS/006/MYD13Q1").filterDate('2020-01-01', '2020-12-31').select("NDVI");
//换算单位
var multiply = function(image){ 
 var img = image.multiply(0.0001);  
 return img.set('system:time_start',image.get('system:time_start'));
};
ndvi = ndvi.map(multiply);
//设置调色板并展示影像
var colorizedVis = {min: 0.0,  max: 1.0,  palette: ['FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901', '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',  '012E01', '011D01', '011301']};
print(ndvi);
function exportImageCollection(imgCol) {
  var indexList = imgCol.reduceColumns(ee.Reducer.toList(), ["system:index"]).get("list");
  indexList.evaluate(function(indexs) {
    for (var i=0; i<indexs.length; i++) {
      var image = imgCol.filter(ee.Filter.eq("system:index", indexs[i])).first();
      image = image.clip(geometry);
      Map.addLayer(image, colorizedVis, indexs[i]);//查看具体的遥感影像
      //tif数据下载
      Export.image.toDrive({
        image: image,
        description: 'modis_ndvi_'+indexs[i],
        fileNamePrefix: 'modis_ndvi_'+indexs[i],
        folder: 'Modis',
        region: geometry,
        scale: 250,
        crs: "EPSG:4326",
        maxPixels: 1e13
      });
    }
  });
}
exportImageCollection(ndvi);

在这里插入图片描述
在这里插入图片描述

7. 月数据下载(以MYD13Q1为例子)

7.1 代码一

//以鹿邑为例子 
var geometry = ee.FeatureCollection('users/www1573979951/luyixian');
Map.centerObject(geometry,6);
//选取影像集以及波段 NDVI
var ndvi = ee.ImageCollection("MODIS/006/MYD13Q1").filterDate('2020-01-01', '2020-12-31').select("NDVI");
//换算单位
var multiply = function(image){ 
 var img = image.multiply(0.0001);  
 return img.set('system:time_start',image.get('system:time_start'));
};
ndvi = ndvi.map(multiply);
//设置调色板并展示影像
var colorizedVis = {min: 0.0,  max: 1.0,  palette: ['FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901', '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',  '012E01', '011D01', '011301']};

//时间范围
var years = ee.List.sequence(2020, 2020);
var months = ee.List.sequence(1, 12);

//将逐日数据生成月平均数据
var monthlymeanNDVI =  ee.ImageCollection.fromImages(
  years.map(function (y) {
    return months.map(function(m) {
      return ndvi.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));
    });
  }).flatten());

print(monthlymeanNDVI)
function exportImageCollection(imgCol) {
  var indexList = imgCol.reduceColumns(ee.Reducer.toList(), ["system:index"]).get("list");
  indexList.evaluate(function(indexs) {
    for (var i=0; i<indexs.length; i++) {
      var image = imgCol.filter(ee.Filter.eq("system:index", indexs[i])).first();
      image = image.clip(geometry);
      Map.addLayer(image, colorizedVis, indexs[i]);//查看具体的遥感影像
      //tif数据下载
      Export.image.toDrive({
        image: image,
        description: 'modis_ndvi_'+indexs[i],
        fileNamePrefix: 'modis_ndvi_'+indexs[i],
        folder: 'Modis',
        region: geometry,
        scale: 250,
        crs: "EPSG:4326",
        maxPixels: 1e13
      });
    }
  });
}
exportImageCollection(monthlymeanNDVI);

在这里插入图片描述
在这里插入图片描述

7.2 代码二(简洁)

var geometry = ee.FeatureCollection('users/www1573979951/luyixian');
Map.centerObject(geometry,6);
var NDVI =ee.ImageCollection("MODIS/006/MYD13Q1");
for(var i=2018;i<=2020;i++){
  for(var j=1;j<=12;j++){
    var data_collection = null;
    switch(j){
      case 1:
      case 3:
      case 5:
      case 7:
      case 8:
      case 10:
      case 12:
        data_collection = NDVI.filterDate(i+'-'+j+'-01',i+'-'+j+'-31').select('NDVI');
        break;
      case 4:
      case 6:
      case 9:
      case 11:
        data_collection = NDVI.filterDate(i+'-'+j+'-01',i+'-'+j+'-30').select('NDVI');
        break;
      case 2:
        data_collection = NDVI.filterDate(i+'-'+j+'-01',i+'-'+j+'-28').select('NDVI');
        break;
    }
    // print(data_collection)
    var YR_collection = data_collection.mean().multiply(0.0001).clip(geometry);
    // print(YR_collection)
    Export.image.toDrive({
      image: YR_collection,
      description: i+'-'+j,
      fileNamePrefix: i+'-'+j,
      scale: 250,
      region: geometry,
      maxPixels: 1e13,
      folder: 'Modis'
    })
  }
}

在这里插入图片描述

8. 年数据下载(以MYD13Q1为例子)

8.1 代码一

 var geometry = ee.FeatureCollection('users/www1573979951/luyixian');
// 选择数据集并进行波段比例换算
var collection = ee.ImageCollection("MODIS/006/MOD13Q1").filterDate('2000-01-01', '2020-12-31').select("NDVI");
//换算单位
var multiply = function(image){ 
  var img = image.multiply(0.0001);  
  return img.set(image.toDictionary(image.propertyNames()));
};
collection = collection.map(multiply);
//进行年平均值的计算
var years = ee.List.sequence(2000, 2020);
var collectYear = ee.ImageCollection(years
  .map(function(y) {
    var start = ee.Date.fromYMD(y, 1, 1);
    var end = start.advance(12, 'month');
    return collection.filterDate(start, end).reduce(ee.Reducer.mean()).float().set('system:time_start',y).set('year',y);
}));
print(collectYear);

//年均值的时间序列展示
var Yearly_chart = ui.Chart.image.series({
    imageCollection: collectYear.select('NDVI_mean'),
    region: geometry,
    reducer: ee.Reducer.mean(),
    scale: 500,
    xProperty: 'year',
    }).setOptions({
      interpolateNulls: true,
      lineWidth: 2,
      title: 'NDVI Yearly Seires',
      vAxis: {title: 'NDVI'},
      hAxis: {title: 'Date'},
      //trendlines: { 0: {title: 'NDVI_trend',type:'linear', showR2: true,  color:'red', visibleInLegend: true}}
    });
print(Yearly_chart);
var colorizedVis = {min: 0.0,  max: 1.0,  palette: ['FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901', '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',  '012E01', '011D01', '011301']};
function exportImageCollection(imgCol) {
  var indexList = imgCol.reduceColumns(ee.Reducer.toList(), ["system:index"]).get("list");
  indexList.evaluate(function(indexs) {
    for (var i=0; i<indexs.length; i++) {
      var image = imgCol.filter(ee.Filter.eq("system:index", indexs[i])).first();
      image = image.clip(geometry);
      Map.addLayer(image, colorizedVis, indexs[i]);//查看具体的遥感影像
      //tif数据下载
      Export.image.toDrive({
        image: image,
        description: 'modis_ndvi_'+indexs[i],
        fileNamePrefix: 'modis_ndvi_'+indexs[i],
        folder: 'Modis',
        region: geometry,
        scale: 250,
        crs: "EPSG:4326",
        maxPixels: 1e13
      });
    }
  });
}
exportImageCollection(collectYear);

在这里插入图片描述
在这里插入图片描述

8.2 代码二(简洁)

var geometry = ee.FeatureCollection('users/www1573979951/luyixian');
Map.centerObject(geometry,6);
var NDVI =ee.ImageCollection("MODIS/006/MYD13Q1");

for(var i=2018;i<=2020;i++){
  var data_collection = NDVI.filterDate(i+'-01-01',i+'-12-31').select('NDVI');
  print(data_collection)
  var YR_collection = data_collection.mean().multiply(0.0001).clip(geometry);
  Export.image.toDrive({
    image: YR_collection,
    description: i,
    fileNamePrefix: i,
    scale: 250,
    region: geometry,
    maxPixels: 1e13,
    folder: 'Modis'
  });
}

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

博途1200PLC轴控功能块(脉冲轴)

1200选择晶体管输出的型号,本体支持脉冲发送,利用工艺对象可以组态脉冲轴。利用1200和1500PN总线可以进行总线伺服的控制,具体请参看下面的博客: 博途1200/1500PLC V90 PN通信控制 (FB284功能块)_RXXW_Dor的博客-CSDN博客_fb284功能块先简单说下如何获取FB284,一般有2种方…

redirs非关系型数据库使用

非关系型数据库是将不经常使用的数据保存到redis缓存中&#xff0c;当前端访问redis缓存数据&#xff0c;如果没有查到该数据&#xff0c;则从数据库中查询&#xff0c;并将数据缓存到redis里。 数据结构介绍&#xff1a; redis的存储主要是key,value的数据格式&#xff0c;其…

Node.js 是如何做 GC (垃圾回收)的?

大家好&#xff0c;我是前端西瓜哥。今天我们来研究一下 Node.js 是如何做 GC 的。 GC&#xff0c;Garbage Collection&#xff0c;垃圾回收。在编程中&#xff0c;一般指的是内存自动回收机制&#xff0c;会定时将不需要用到的数据进行清除。 Node.js 底层使用了 V8 引擎。V…

Android入门第31天-Android里的ViewFlipper翻转视图的使用

介绍 本篇给大家带了的是ViewFlipper&#xff0c;它是Android自带的一个多页面管理控件&#xff0c;且可以自动播放&#xff01; 和ViewPager不同&#xff0c;ViewPager是一页页的&#xff0c;而ViewFlipper则是一层层的&#xff0c;和ViewPager一样&#xff0c;很多时候&…

Vivado在Linux下的安装与运行

一. Vivado安装步骤 下载解压安装包后&#xff0c;并进入安装包路径运行终端 cd Downloads/Xilinx_Vivado_SDK_2017.4运行 sudo apt install libncurses5 安装ncurses库 sudo apt install libncurses5 运行 sudo chmod x setup 添加可执行权限 sudo chmod x setup运行 sudo .…

PHP反序列化漏洞解析

序列化 所谓序列化就是将原数据对象转换为具有一定格式的数据 举一个最简单的例子&#xff0c;在C中&#xff0c;若要开发一个数据库&#xff0c;那么一定涉及到数据的存储&#xff0c;要将内存中的数据持久化的保存在磁盘中&#xff0c;这就要对数据的存储格式进行优化&…

[附源码]java毕业设计企业信息网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

网关及其分类

1. 介绍 大家都知道&#xff0c;从一个房间走到另一个房间&#xff0c;必然要经过一扇门。同样&#xff0c;从一个网络向另一个网络发送信息&#xff0c;也必须经过一道“关口”&#xff0c;这道关口就是网关。顾名思义&#xff0c;网关(Gateway)就是一个网络连接到另一个网络的…

深度探究多线程的效率以及多线程的使用建议

随着时代发展&#xff0c;电脑的核心数慢慢增多&#xff0c;在开发程序的过程中&#xff0c;是否选择使用多线程这是个比较大的问题&#xff0c;下面我通过一个程序去深入理解多线程对程序速度的影响到底有多大 计算亿级别个数的累加和&#xff1a; 单线程模型运行程序&#…

SNMP(二)

♥️作者&#xff1a;小刘在C站 ♥️每天分享云计算网络运维课堂笔记&#xff0c;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的&#xff0c;绽放。 目录 一.SNMP是什么 二.SolarWinds 网管软件使用 步骤1 步骤2 步骤3 步骤4 三.SNMP命令…

使用go pprof进行golang程序内存分析

引言 日常项目&#xff0c;有时会出现oom的情况&#xff0c;这时候我们光依靠code review进行问题定位是很困难的。这里我们需要一个排查工具&#xff0c;来定位是哪里的代码导致内存溢出的&#xff0c;这个工具就是pprof前提 如果是非http(s)服务类的&#xff0c;需要在代码…

基于PHP+MySQL的宠物领养救助社交网站

当前很多的宠物被抛弃和虐杀,它们没有选择权,我们强制性的把狗带进人类的生活中,然后又无情的抛弃,让它们无家可归,变成流浪狗,它们做错了什么&#xff1f;流浪动物被主人遗弃之后居无定所,时刻面对着严寒、酷暑、生病、死亡,饥饿、等一系列威胁它们生命的存在为了能够让这些。…

BlenderGIS插件 城市建筑3D模型自动生成 教程

目录 一、下载Blender和BlenderGIS 二、解决 No imaging library...报错 三、生成城市3D模型 四、导出模型 本文所需文件可在如下链接下载&#xff0c;或者直接按照博文下载步骤下载 https://download.csdn.net/download/ChaoChao66666/87071901?spm1001.2014.3001.550…

Node的Web编程

一、node的事件处理 1、node采用的事件驱动模式来进行事件处理的&#xff1a;只有当事件被触发时才执行相关程序 2、node是单线程运行的&#xff1a;采用事件轮询方式&#xff0c;不断的查询事件队列中的消息&#xff0c;然后根据消息执行对应的回调函数 3、node事件机制中的…

ASEMI代理艾赛斯DSP25-12A,整流二极管DSP25-12A

编辑-Z 艾赛斯整流二极管DSP25-12A参数&#xff1a; 型号&#xff1a;DSP25-12A 最大重复反向阻断电压&#xff08;VRRM&#xff09;&#xff1a;1200V 反向电流、漏极电流&#xff08;IR&#xff09;&#xff1a;40uA 正向电压降&#xff08;VF&#xff09;&#xff1a;1…

this用法总结

文章目录1.常规下this的指向1.1 全局环境中的this1.2 上下文对象调用中的this1.3 this指向绑定事件的元素1.4 箭头函数的this指向2. 改变this指向2.1 call - Function.prototype.call( )2.1.1 call的第一个参数2.1.2 call接受多个参数2.1.3 调用对象的原生方法2.2 apply - Func…

LFMCW雷达测速基础- 多普勒频移和2DFFT

LFMCW雷达测速基础1 基本测速原理——多普勒频移1.0 写在前面1.1 多普勒效应1.2 多普勒频移疑问2 LFMCW雷达测速原理2.1 Doppler Shift 到底是调频还是调相2.2 为什么是二维FFT1 基本测速原理——多普勒频移 1.0 写在前面 振动/波在空间中传播有三个关键变量&#xff0c;分别…

iNFTnews|Web3正在重新定义粉丝的意义

数字身份正在发展&#xff0c;粉丝圈本身也在发展。Web3技术使粉丝们能够以一种更加人际化的方式与同好、媒体、内容创作者甚至他们崇拜的名人进行互动&#xff0c;粉丝和创作者都可以获得更人性化的体验。另外&#xff0c;一些激励措施还有望从根本上改变我们对名人概念本身的…

Java#14(StringJoiner)

目录 一.StringJoiner的构造方法和成员方法 StringJoiner是jdk8才出现的 作用:可以高效和方便的拼接字符串 1.StringJoiner的构造方法 2.StringJoiner的成员方法 一.StringJoiner的构造方法和成员方法 StringJoiner是jdk8才出现的 作用:可以高效和方便的拼接字符串 1.Stri…

一篇文章入门单链表+刷题实践【java实现+详细注释】

文章目录节点定义链表类获取链表长度清空链表添加节点到链表尾部根据id来删除节点根据id来查询节点修改相同id的节点信息打印链表逆序打印反转链表测试代码打印信息习题反转链表删除链表的节点删除链表的倒数第k个节点节点定义 关于节点里面所存储的信息&#xff0c;需要什么就…