文章目录

  • 一、处理过程
  • 二、代码实现(MATLAB)
  • 三、实现效果

MOD13Q1数据的具体介绍可以到官方网站上进行阅读,这里就不再赘述,这里就直接上代码了。

一、处理过程

1、根据日期(天数)判断是那个月份。
2、根据月份将数据按照季度、年度进行NDVI最大值合成。

二、代码实现(MATLAB)

daycal.m

function [day]=daycal(year,month)
%根据某年某月推算出该月份的天数
num=[1,3,5,7,8,10,12];
if mod(year,4)==0   %&& mod(year,100) %判断year是否为闰年,因为闰年的2月是29天if month==2day=29;elseif sum(ismember(num,month))==1day=31;elseday=30;end
else%非闰年的情况if month==2day=28;elseif sum(ismember(num,month))==1day=31;elseday=30;end
end
end

DayToMonth.m

function Month = DayToMonth(date)
%DAYTOMONTH 此处显示有关此函数的摘要
%根据天数确定月数
year = floor(date / 1000);
days = mod(date,1000);
months = MonthdaysInYear(year);
for i=1:12if days <= months(1,i)Month = i;break;end
end
end

MonthdaysInYear.m

function  months = MonthdaysInYear(year)
% 此处显示有关此函数的摘要
% 根据年份获取该年份所有月的天数months = zeros(1,12);months(1,1) = 31; for i=2:12months(1,i) = months(1,i-1)+daycal(year,i);end
end

NDVIMerge.m

function ndvi = NDVIMerge(img1,img2)
%NDVIMERGE 此处显示有关此函数的摘要
%对输入数据进行NDVI最大合成
shape = size(img1);
row = shape(1,1);
col = shape(1,2);
ndvi = img1;
for i=1:rowfor j=1:colif ndvi(i,j) < img2(i,j)ndvi(i,j) = img2(i,j);endend
end
end

main.m

clc
clear
close all%获取数据文件
dirPath=uigetdir();   %选择要进行计算文件路径if isempty(dirPath) || length(dirPath) == 1fprintf("未选择目录!\n");return;
end
outputPath = 'C:\Users\23547\Desktop\others\yingying\result';
outputPath = [outputPath,'\'];
files=dir(dirPath);
fileNames={files.name};
pathName=[dirPath,'\'];quarter=["春","夏","秋","冬"];
quarterNum = 1;
fprintf("开始计算...\n");
fullPath = [pathName,fileNames{3}];
fprintf("读取%s!\n",fileNames{3});
[Data,R]=geotiffread(fullPath);   %加载数据
info = geotiffinfo(fullPath);  % 读取tif数据的地理信息,为后面导出为tif数据提供地理信息
strArr = strsplit(fileNames{3},".");
dateRecord = strArr{2};
isNumber = isstrprop(dateRecord,'digit');
date=str2num(dateRecord(isNumber));
preyear = floor(date / 1000);
quarterResult = Data;
allResult = Data;
for m=4:size(fileNames,2)fullPath = [pathName,fileNames{m}];fprintf("读取%s!\n",fileNames{m});[Data,R]=geotiffread(fullPath);   %加载数据strArr = strsplit(fileNames{m},".");dateRecord = strArr{2};isNumber = isstrprop(dateRecord,'digit');date=str2num(dateRecord(isNumber));year = floor(date / 1000);month = DayToMonth(date);if year-preyear>0filename = [outputPath,num2str(floor(preyear)),num2str(quarter(quarterNum)),...strArr{3},'.tif'];  %存储位置和名字quarterResult=double(quarterResult)/10000;geotiffwrite(filename,quarterResult, R, 'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag);  %导出filename = [outputPath,num2str(floor(preyear)),...strArr{3},'all.tif'];  %存储位置和名字allResult=double(allResult)/10000;geotiffwrite(filename,allResult, R, 'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag);  %导出quarterResult = Data;allResult = Data;quarterNum = 1;preyear = year;continue;elseif month > 3*quarterNumfilename = [outputPath,num2str(year),num2str(quarter(quarterNum)),...strArr{3},'.tif'];  %存储位置和名字quarterResult=double(quarterResult)/10000;geotiffwrite(filename,quarterResult, R, 'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag);  %导出quarterResult = Data;allResult=NDVIMerge(allResult,Data);quarterNum=quarterNum+1;continue;endquarterResult=NDVIMerge(quarterResult,Data);allResult=NDVIMerge(allResult,Data);
end
filename = [outputPath,num2str(floor(year)),num2str(quarter(quarterNum)),...strArr{3},'.tif'];  %存储位置和名字
quarterResult=double(quarterResult)/10000;
geotiffwrite(filename,quarterResult, R, 'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag);  %导出filename = [outputPath,num2str(floor(year)),...strArr{3},'all.tif'];  %存储位置和名字
allResult=double(allResult)/10000;
geotiffwrite(filename,allResult, R, 'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag);  %导出
fprintf("计算成功!\n");

三、实现效果

MOD13Q1数据最大合成NDVI数据相关推荐

  1. 最新Modis影像数据下载完整流程---以MOD13Q1 NDVI数据下载为例(2020年12月2日更新)

    本文详细讲解Modis数据的下载流程,以MOD13Q1影像为例,该数据为16天合成的空间分辨率为250m的NDVI产品,原始数据的投影为正弦曲线投影. Modis数据MRT和ArcGIS处理方法集锦: ...

  2. 利用MRT进行Modis NDVI数据(MOD13Q1)投影变换格式转换操作图文教程

    本实例以Modis NDVI(MOD13Q1,空间分辨率为250m)一景影像数据为例,演示利用MRT进行Modis NDVI影像变换,主要内容包括:将.hdf格式转为.tif格式,将坐标系转为Albe ...

  3. GEE:批量下载NDVI数据,按年最大值合成,GIMMS NDVI from AVHRR Sensors (3rd Generation)

    源代码: https://code.earthengine.google.com/f3f5c1ed2bc4dc30a678857bb5074d6d?noload=true 批量下载按月合成数据代码: ...

  4. 使用MOD13A1产品NDVI数据计算植被覆盖度

    MOD13A1数据分辨率500m,相比A2与A3的分辨率略高,计算结果可能更准确.也要看研究区大小,我的研究区较大,且其他数据分辨率是1KM,其实没必要使用500m的分辨率. MOD13Q1分辨率25 ...

  5. Google Earth Engine(GEE)批量下载代码(以 NDVI数据为例)

    下载数据先准备工作(具体细节都能查到):科学上网 谷歌邮箱,谷歌邮箱注册GEE账号. 一:导入需要下载边界shp文件. 标题 找到自己的shp文件,导入除了sbx文件的所有文件. 导入成功 命名ass ...

  6. GEE(8):使用MODIS填补由去云后的Landsat影像计算得到的NDVI数据

    最近想要在GEE中使用Landsat影像计算一下广州的NDVI值,发现这片区域云覆盖较多,去云以后部分月份的数据很少,就造成NDVI计算结果缺失的问题.经过查阅相关资料,可以使用MODIS的NDVI产 ...

  7. 【遥感物候】C#遥感数据GIMMS 3G NDVI头文件批量生成器(几何校正)

    长时间序列全球NDVI数据GIMMS 3g(点击下载),原数据无投影,格式为VI3g,IE浏览器下载的为.txt格式.GIS软件无法直接打开,Envi 5可以打开. ENVI中点击File->O ...

  8. 基于MOD09Q1数据批量计算NDVI

    基于MOD09Q1数据批量计算NDVI 通过MRT处理好b01和b02波段后,分别存储至两个不同的文件夹(b01和b02). 接下来打开在arcgis自带的python2.7中键入以下代码:(如果用p ...

  9. MODIS MOD13A3 ndvi数据sg批量滤波

    [a,R]=geotiffread('D:\graduate\extracttotiff\extr2010152.tif'); %将数据内容放到A里(二维矩阵),将地理参考放到R里面 info=geo ...

最新文章

  1. SAP MM初阶事务代码MEK1维护PB00价格
  2. 监控mysql的shell脚本_监控MySQL主从状态的shell脚本
  3. android.mk添加静态库,Android Gradle添加静态库
  4. django 1.8 官方文档翻译: 1-2-2 编写你的第一个Django应用,第2部分
  5. 特斯拉电动皮卡发布:马斯克称它能防弹、能上火星,结果还没扛过一钢球......
  6. 利用人工智能“解锁”世界音乐
  7. linux中的命令ls -1,Linux常用命令 ls 入门基础知识
  8. 主流H5、Js 3D游戏引擎和框架
  9. Windows10-查询电脑mac地址
  10. 信息系统项目管理师思维导图
  11. Java Mission Control(JMC)介绍
  12. python无限循环小数_如何把一个无限循环小数转换成一个分数(算法)
  13. 【工具】- 在线画图
  14. 【计算机网络】网线规格的鉴别与接线方法
  15. 赫夫曼树的创建(思路分析)
  16. require(‘inquirer‘)报错
  17. python编程遵循哪些规律_编程语言软件开发10个小技巧,Java、python、前端等都遵循此规律,108G资料放送中!...
  18. APP进行微信分享,提示签名不一致解决方案
  19. 团购模式的持久性--看书《九败一胜》
  20. UE4 C++入门之路4-PostInitProperties函数详解(设置属性默认值的四种方法)

热门文章

  1. 数电三:编码器和译码器
  2. 北京计算机网络主考院校6,北京自考各专业主考院校一览表
  3. 孤狼电商店群全套教程:店群基础+2.0精细化蓝海+深度蓝海+裂变课程2.0
  4. 画论51 沈灏《画尘》
  5. 每日一练20210426
  6. python绘制如下图形、小三角形边长20_python实现输入三角形边长自动作图求面积案例...
  7. Process exited after 8.127 seconds with return value 3221226356,求解决方案!
  8. 挡板门在湿式烟气脱硫系统中是怎样的存在?
  9. python爬虫微信_搜狗微信采集 —— python爬虫系列一
  10. pc端如何把URL参数隐藏