MODIS数据下载及图像处理教程

article/2025/6/19 14:21:42

任务描述:如题,以2010年月尺度1km的MODIS的植被覆盖度(NDVI)数据为例

第一步 :获得MODIS数据下载链接

Earthdata Search(下载地址)
在这里插入图片描述可以选择自己想要的时间空间范围,NASA官网会自动生成下载链接,点击保存得到txt文件

第二步:下载数据(使用MATLAB)

那么如何根据Txt文件中的url链接下载数据呢?

%% 代码用于下载MODIS NDVI月尺度数据,全部存在默认文件夹中,需要将系统默认浏览器设置为Chrome,存储路径在浏览器中修改clc
clear
close allurl_total = textread('C:\Users\DELL\Downloads\NDVI201002.txt','%s');   %NDVI201002.txt 是我重命名的MODIS下载链接文件
for i = 1:length(url_total)           url = url_total{i};web(url,'-browser')disp([num2str(i),'/',num2str(length(url_total))])%设置5秒的时间间隔,避免过于密集地打开T = clock;t1 = T(6);while 1T = clock;t2 = T(6);if abs(t2 - t1)>5break;endend
end

第三步:数据分类(使用MATLAB)

此时MODIS的数据全部被下载在一个文件夹中了,我们需要根据文件名进行分类,把同一个月的数据放在同一个文件夹下,方便后续的操作

clc
clear%% 根据文件名进行分类
datadir = 'C:\Users\DELL\Downloads\';       %指定hdf文件所在位置
filelist = dir([datadir,'*.hdf']);          %指定文件类型
k = length(filelist);
time_standard = {'001','032','060','091','121','152','182','213','244','274','305','335'};...%MODIS官网文件命名规则,例如'032'指的是第二个月
for i = 1:khdfFilePath = ['C:\Users\DELL\Downloads\',filelist(i).name];  %依次读取文件time_num = filelist(i).name(14:16);      %记录序列编号[~,b] =ismember(time_num,time_standard);      %根据文件名判断属于第几个月if b < 10movefile(hdfFilePath, ['F:\MODIS_NDVI_Monthly_1km_v006\hdf\20100',num2str(b),'\',filelist(i).name])elsemovefile(hdfFilePath, ['F:\MODIS_NDVI_Monthly_1km_v006\hdf\2010',num2str(b),'\',filelist(i).name])end
end

这样我们的文件就分类存储在不同文件夹下了,例如’032’的文件全在201002文件夹下:
在这里插入图片描述

第四步:数据转换(hdf→tif,使用python)

此时的文件还是hdf,需要转换为tif文件进行拼接操作
此处转换代码来自:python_MODIS HDF数据转为tif并拼接图像
做了一些修改,增加了批量转换功能:

# -*- coding:utf-8 -*-
'''
用于将NDVI的hdf文件转为tif
'''
import os
import arcpy
from arcpy import env
time_mon = ['01','02','03','04','05','06','07','08','09','10','11','12']
for i in range(0,12):# print(i)sourceDir=(u'F:\\MODIS_NDVI_Monthly_1km_v006\\hdf\\2010'+time_mon[i]+'\\') #输入targetDir=(u'F:\\MODIS_NDVI_Monthly_1km_v006\\tif\\2010'+time_mon[i])      #输出arcpy.CheckOutExtension("Spatial")env.workspace = sourceDirarcpy.env.scratchWorkspace = sourceDirhdfList = arcpy.ListRasters('*','hdf')for hdf in hdfList:print hdfeviName=os.path.basename(hdf).replace('hdf','tif')outname=targetDir+'\\'+eviNameprint outnamedata1=arcpy.ExtractSubDataset_management(hdf,outname, "MOD_Grid_monthly_1km_VI") #MOD_Grid_monthly_1km_VI是子数据集名称
print 'all done'

在这里插入图片描述

第五步:图像拼接(使用python)

将200多个小图像拼接成全球分布图
代码来自ArcPy镶嵌至新栅格(MosaicToNewRaster)
做了一些修改,添加了批量拼接的功能

# -*- coding: utf-8 -*-
"""
Created on Wed Jan 20 20:20:39 2021
@author: Administrator
"""# -*- coding: utf-8 -*-import arcpy
from arcpy import env
from arcpy.sa import *time_mon = ['01','02','03','04','05','06','07','08','09','10','11','12']
for i in range(0,12):# 定义工作区env.workspace = ('F:\\MODIS_NDVI_Monthly_1km_v006\\tif\\2010'+time_mon[i]+'\\')# 裁剪后文件输出的文件夹outputpath= "F:\\MODIS_NDVI_Monthly_1km_v006\\tif"# 读取工作区中的所有的栅格文件rasters = arcpy.ListRasters("*", "tif")mosaic_rasters=""for raster in rasters:mosaic_rasters=mosaic_rasters+raster+";"print(mosaic_rasters)arcpy.CheckOutExtension("Spatial")arcpy.MosaicToNewRaster_management(mosaic_rasters,outputpath, ('2010'+time_mon[i]+'.tif'), "","16_BIT_SIGNED", "", "1", "","")print('finish')

关于拼接命令arcpy.MosaicToNewRaster_management,建议详细读一下镶嵌至新栅格,不同子栅格之间是用分号隔开的

得到最后成果图:
在这里插入图片描述Finish!

在这里插入图片描述


http://chatgpt.dhexx.cn/article/oFMoGsQD.shtml

相关文章

MODIS数据知识积累

文章目录 一、MODIS数据简介1.1 MODIS参数1.2 MODIS产品及命名规则1.3 MODIS的波段说明 二、MODIS数据使用的投影三、常用的MODIS数据四、MODIS数据下载及处理 一、MODIS数据简介 1.1 MODIS参数 空间分辨率——250 m (1-2波段)&#xff1b;500 m (3-7波段)&#xff1b;1000 m…

MODIS数据介绍及影像数据下载

1.MODIS数据概述&#xff1a; 搭载在Terra和Aqua两颗卫星上的中分辨率成像光谱仪&#xff08;MODIS&#xff09;&#xff0c;是美国地球观测系统&#xff08;EOS&#xff09;计划中用于观测全球生物和物理过程的重要仪器。它具有36个中等分辨率水平&#xff08;0.25-1μm&…

MODIS数据的简介和下载(一)——MODIS数据简介

借最近上课实习上机内容&#xff0c;来介绍MODIS数据相关方面内容。本部分主要包括了MODIS数据的简介和下载的问题。本篇是第一部分&#xff0c;MODIS的简介。主要分为三个部分&#xff1a;1.MODIS传感器简介及参数&#xff1b;2.MODIS产品及命名规则&#xff1b;3.MODIS的典型…

5G注册流程分级详解

*** 欢迎转发&#xff0c;转发请注明出处。*** 前段时间学习5G积攒了一些学习笔记&#xff0c;整理一下发出来&#xff0c;也算蹭个热点&#xff0c;撞撞风口&#xff0c;走走流量。原计划分为四级整理笔记&#xff0c;适应从肉食者到搬砖者不同的人群分级学习&#xff0c;尽…

Java高阶知识体系总结(一)

Java高阶知识体系总结 1.Java 基础 Java类设计的原则就是内聚性&#xff0c;一致性和封装性是Java设计的基本原则 1.1 Java基础理论 Java基础理论知识 1.2继承的优缺点 优点 &#xff1a; 新的实现很容易&#xff0c;因为大部分是继承而来的&#xff0c;很容易修改和扩展已有…

业务流程集成如何做

随着各行业的发展趋势及信息化技术的发展&#xff0c;现代企业对于人财物产供销的管理不再是片面、彼此孤立的&#xff0c;而是基于企业IT架构规划&#xff0c;构建内容环环相扣&#xff0c;过程注重整体业务流程梳理。任何管理都离不开业务流程&#xff0c;有效的流程管理可以…

DolphinScheduler——流程调度工具

目录 一、平台简介 二、竞品软件分析 三、安装部署 3.1 基础环境 3.2 安装前操作 3.3具体安装操作步骤 3.4 名词解释 四.功能介绍 4.1 首页&项目管理 4.1.1 首页 4.1.2 项目管理 4.1.3 任务节点类型和参数设置 4.2 资源中心 4.2.1文件管理 4.2.2 UDF管理 4.…

高并发系统设计

高并发系统设计 高并发通用设计方法 Scale-out&#xff08;横向扩展&#xff09; Scale-up&#xff08;纵向扩展&#xff09; 缓存异步 什么是同步什么是异步 指导原则 高并发原则高可用原则业务设计原则 分层架构 分层有什么好处如何来做系统分层 如何提升系统性能 高并发系统…

《大型网站技术架构》学习笔记

大型网站技术架构 大型网站的技术挑战主要来自于庞大的用户&#xff0c;高并发的访问和海量的数据&#xff0c;任何简单的业务一旦需要处理数以PB计的数据和面对数以亿计的用户&#xff0c;问题就会变得很棘手。 大型网站架构主要就是解决这类问题。 这个世界没有哪个网站从诞…

如何量化分布式系统高性能指标?

目录 1、高性能指标 1.1 并发连接数 1.2 响应时间 1.3 吞吐量 1.4 响应时间&并发数&吞吐量之间的关系 2、JMeter压力测试 3、系统实时性能 4、性能优化基本原则 4.1 避免过早优化 4.2 进行系统性能测试 4.3 寻找系统瓶颈&#xff0c;分而治之&#xff0c;逐…

Kafka生产者发送流程详解

参考资料&#xff1a;《深入理解Kafka核心设计与实践原理》、《尚硅谷2022版Kafka3.x教程》 Kafka生产者发送流程详解 序列化器分区策略如何将一些相关连的数据放进同一张表里&#xff1f;自定义分区 生产者拦截器 Kafka生产者发送流程详解大致流程如下&#xff1a; 整个生产者…

使用 Lvs + Nginx 集群搭建高并发架构

高并发站点不仅要考虑网站后端服务的稳定&#xff0c;还需要考虑服务能否接入巨大流量、承受巨大流量&#xff0c;如上图&#xff1a; 1:流量接入&#xff0c;可以采用LvsNginx集群&#xff0c;这种方式能接入的QPS能高达数百万 2:通过Lvs实现Nginx集群&#xff0c;NginxTomca…

5G注册流程详解

1.1 注册流程 1.1.1 专享篇 UE发送Registration Request到(R)AN&#xff0c;消息中包含注册类型、用户标识、UE能力及请求的切片等参数。 (R)AN接收到消息&#xff0c;根据用户临时标识或切片选择合适的AMF&#xff0c;如果(R)AN找不到合适的AMF&#xff0c;则将Registration…

WebRTC建立会话流程分析

WebRTC建立会话流程总结 了解如何运行PeerConnection Demo后&#xff0c;熟悉运行流程可以做为深入学习WebRTC的切入点。本节重点解释客户端双方建立会话时交互的主要信令&#xff08;控制会话的文本协议&#xff09;和与信令相关的 WebRTC API。 准备工作 peerconnection_clie…

RPA-机器人流程自动化

RPA-机器人流程自动化 RPA-机器人流程自动化简介RPA是什么&#xff1f;RPA历史上的演变RPA原理RPA特点RPA技术框架及功能1.TagUI2.RPA for Python3.Robot Framework4.Automagica5.Taskt6.OpenRPA RPA部署模式1 环境配置的参数调整2 将自动化程序整体打包部署3 版本的管理和控制…

网络安全应急响应----7、数据泄漏应急响应

文章目录 一、数据泄露简介二、数据泄露途径1、外部泄露2、内部泄露 三、数据泄露应急响应方法1、发现数据泄露2、梳理基本情况3、确定排查范围和目标4、判断泄露途径4.1、主动泄露4.2、被动泄露 5、系统排查 四、数据泄露防御1、数据外部泄露防范2、数据内部泄露防范 一、数据…

发送邮件 显示对方服务器未响应,邮件对方服务器未响应

邮件对方服务器未响应 内容精选 换一换 MX优先级,用来指定邮件服务器接收邮件的先后顺序,数值越小优先级越高。当DNS服务器的解析记录中只有一条MX记录时,MX优先级没有意义。当DNS服务器的解析记录中存在多条MX记录时,邮件发送方的DNS服务器会优先把邮件投递到MX优先级高的…

网络安全应急响应----9、WebShell应急响应

文章目录 一、Webshell简介1、常见webshell2、Webshell检测 二、Webshell应急响应流程1、判断是否被植入webshell2、临时处置3、Webshell排查4、系统排查4.1、Windows系统排查4.2、Linux系统排查4.3、Web日志分析4.4、网络流量排查4.5、清除加固 三、Webshell防御方法 一、Webs…

复杂产品的响应式设计【流程篇】

都说2013年将是响应式设计爆发的一年。一淘设计团队在去年一淘首页改版时初步尝试了响应式&#xff0c;最近在一淘“玩客”项目中有了更加深入地应用&#xff0c;第一次在复杂产品中实现了全站响应式。中间积累了一些经验也踩了不少坑&#xff0c;于是就有了这个响应式设计三部…

史上最全测试流程详解----超详细

前言----- 对于测试流程基本很多做过测试的大牛&#xff0c;小哥哥&#xff0c;小姐姐都能说出个十之八九&#xff0c;但是对于细节&#xff0c;可能还需要一些整理文件&#xff0c;这不&#xff0c;我整理了一些测试的全部流程&#xff0c;希望能给大家带来帮助&#xff0c;有…