当前位置: 首页 > news >正文

AOD实践,modis数据下载,modis数据处理

modis数据下载-数据读取-重投影-拼接-均值

一、数据下载

1、Cygwin安装

Cygwin安装教程:https://blog.csdn.net/u010356768/article/details/90756742

1.2 数据采集

现提供遥感数据下载服务,主要是NASA数据,数据下载网站包括:

LAADSDAAC: https://ladsweb.modaps.eosdis.nasa.gov/
href="https://ladsweb.modaps.eosdis.nasa.gov/search/

EarthData: https://search.earthdata.nasa.gov/

2、C下载

使用Cygwin批量下载卫星数据,以MODIS数据为例
打开Cygwin64 Terminal,依次输入如下命令,每行命令输完点回车。
1、cd G:\trydata\data\
将路径切换至.sh文件所在的文件夹。斜体改为你自己存放.sh文件的路径。
2、chmod 777 5386246296-download.sh
将.sh文件变为可执行文件。斜体改为你自己的.sh文件名。
3、./5386246296-download.sh
执行.sh文件。./后的斜体改为你自己的.sh文件名。
输入Username和password,即EARTHDATA的用户名和密码,注意输入密码的时候窗口不会显示,输完直接点回车即可。

3、谷歌浏览器扩展下载

在Chrome网上应用商店下载Chrono插件
在这里插入图片描述

二、hdf数据读取(MATLAB)

hdr = read_envihdr('****.hdr');
Image = multibandread('****.dat',hdr.size,[hdr.format '=>double'],hdr.header_offset,hdr.interleave,hdr.machine);

如何从气溶胶产品MOD04提取550nm处的气溶胶厚度

如果做数据处理,最好直接写程序去做。matlab中有现成的子程序,hdftool,你可以点击需要输入的参数,下面接着会有输入语句的书写方法,你就照着写到.m文件中做循环就可以了。如果想看数据的内部情况也可以用hdfview
mod04的气溶胶数据都是块状分布,且每天不同时段的都是一个hdf文件,用matlab的hdftool读取某一个hdf文件我可以,但请问如何
将同一天不同时段的数据融合在一起生成逐日的数据?然后如何转换成带坐标系的tiff格式?
假如数据存放的地址为fpath = ‘E:\MODIS’;
file = dir([fpath ‘*.hdf’]); % 得到所有要读文件的名称
for i =1:numel(file)
data = []; %预设的要读取的变量名
fn = [fpath file(i,1).name];
% 下面就可以读取变量了
data = hdfread(fn,……);
save([outpath matfn],‘data’); % outpath 为输出的文件地址 matfn是你想存成的文件名,此时存储的是mat文件
end

三、MOD04_L2批处理之重投影

MCTK手动应用

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

批处理

pro modis_mctkcompile_opt idl2e=envi(/headless)fn= dialog_pickfile(title="open the mod04 data",/directory) ;打开数据目录output_location = 'D:\data\data1\' ;输出路径files=file_search(fn,"*.hdf",count=nums)bridges = mctk_create_bridges()for i=0,nums-1 do begin ;每一个影像进行处理modis_swath_file=files[i]basename=file_basename(files[i]) ;获取输入影像文件名output_rootname=strmid(basename,0,32) ;获取指定范围名字swath_name = 'mod04';这个值自己根据自己数据设置,用hdfviewer打开后,会显示sd_names = ['AOD_550_Dark_Target_Deep_Blue_Combined'] ;;这是数据集名称,是一个字符串数组;  以下参数需要自己去看文档,一般保持不变 。官方地址:https://github.com/dawhite/MCTKout_method = 1output_projection = envi_proj_create(/geographic)interpolation_method = 0print,output_rootnameconvert_modis_data, in_file=modis_swath_file, $out_path=output_location, out_root=output_rootname, $swt_name=swath_name, sd_names=sd_names, $out_method=out_method, out_proj=output_projection, $interp_method=interpolation_method, /no_msg, $r_fid_array=r_fid_array, r_fname_array=r_fname_array, $bridges=bridges, msg=msgendformctk_destroy_bridges, bridges
end

四、MOD04_L2批处理之拼接

1、MODIS图像批量镶嵌拼接方法(IDL/ENVI)

(不会,有会得教教我!!!)

2、ENVI mosaic

2.1手动

【ENVI入门系列】09.图像镶嵌:http://blog.sina.com.cn/s/blog_764b1e9d0102v1p9.html
ENVI5.1无缝镶嵌工具(具体功能)
文件选择
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2二次开发——拼接

PRO MOSAIC_BATCHCOMPILE_OPT IDL2; 启动ENVI 5.1e = ENVI()fn= dialog_pickfile(title="Select input scenes",/directory) ;打开数据目录files=file_search(fn,"*.dat",count=nums); output_location = 'D:\data\outdata3\' ;输出路径scenes = !NULL; 将每一个Raster放在一个Scenes中FOR i=0, N_ELEMENTS(files)-1 DO BEGINbasename=file_basename(files[i]) ;获取输入影像文件名name=strmid(basename,0,20) ;获取指定范围名字for n=0, 12 do beginm=i+nbasename_1=file_basename(files[m]) ;获取输入影像文件名name_1=strmid(basename_1,0,20) ;获取指定范围名字print,basename_1if name_1 ne name then breakraster = e.OpenRaster(files[m])scenes = [scenes, raster]endfori=m-1; 创建ENVIMosaicRaster对象mosaicRaster = ENVIMosaicRaster(scenes,$background = -999,$color_matching_method = 'histogram matching',$color_matching_stats = 'overlapping area',$feathering_distance = 20,$feathering_method = 'seamline',$resampling = 'bilinear',$seamline_method = 'none');  newFile = ENVI_PICKFILE(title='Select output file', $ /output)
;  IF FILE_TEST(newFile) THEN FILE_DELETE, newFile; 设置输出路径output_location = 'G:\NDVI\mosaic\' + name + '.dat' ;输出路径IF FILE_TEST(output_location) THEN FILE_DELETE, output_location ; 输出镶嵌结果mosaicRaster.Export, newFile, 'ENVI'ENDFOR
END

五、裁剪

app商店下载安装批处理工具包
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、均值计算

pro modis_swath_averagestart_time= systime(1)input_directory= 'D:\study\AOD\Mosaicdata1\'output_directory=input_directoryfile_list=file_search(input_directory,'*.tif');路径file_n=n_elements(file_list)output_resolution=0.03 ;像元分辨率output_name=output_directory+'avr.tif';结果print,file_n;循环,读图像信息:经纬度lon_min=9999.0lon_max=-9999.0lat_min=9999.0lat_max=-9999.0for file_i=0,file_n-1 do begindata=read_tiff(file_list[file_i],geotiff=geo_info)data_size=size(data)data_col=data_size[1];范围:最大data_line=data_size[2]resolution_tag=geo_info.(0)geo_tag=geo_info.(1)temp_lon_min=geo_tag[3]temp_lon_max=temp_lon_min+data_col*resolution_tag[0]temp_lat_max=geo_tag[4]temp_lat_min=temp_lat_max -data_line*resolution_tag[1]if temp_lon_min lt lon_min then lon_min=temp_lon_minif temp_lon_max gt lon_max then lon_max=temp_lon_maxif temp_lat_min lt lat_min then lat_min=temp_lat_minif temp_lat_max gt lat_max then lat_max=temp_lat_maxendfor;经纬度数据存储data_box_geo_col=ceil((lon_max-lon_min)/output_resolution)data_box_geo_line=ceil((lat_max-lat_min)/output_resolution)data_box_geo_sum=fltarr(data_box_geo_col,data_box_geo_line)data_box_geo_num=fltarr(data_box_geo_col,data_box_geo_line);逐像元循环位置for file_i=0,file_n-1 do beginprint,file_list[file_i]data=read_tiff(file_list[file_i],geotiff=geo_info)data_size=size(data)data_col=data_size[1]data_line=data_size[2]resolution_tag=geo_info.(0)geo_tag=geo_info.(1)temp_lon_min=geo_tag[3]temp_lat_max=geo_tag[4]for data_col_i=0,data_col-1 do beginfor data_line_i=0,data_line-1 do begintemp_lon=temp_lon_min+data_col_i*resolution_tag[0]temp_lat=temp_lat_max-data_line_i*resolution_tag[1]data_box_col_pos=floor((temp_lon-lon_min)/output_resolution)data_box_line_pos=floor((lat_max-temp_lat)/output_resolution)if (data[data_col_i,data_line_i]eq 0.0)then continuedata_box_geo_sum[data_box_col_pos,data_box_line_pos]=data_box_geo_sum[data_box_col_pos,data_box_line_pos]+data[data_col_i,data_line_i]data_box_geo_num[data_box_col_pos,data_box_line_pos]=data_box_geo_num[data_box_col_pos,data_box_line_pos]+1.0endforendfor;col_start=floor((temp_lon_min-lon_min)/output_resolution);  line_start=floor((lat_max-temp_lat_max)/output_resolution);  data_box_geo_sum[col_start:col_start+data_col-1,line_start:line_start+data_line-1]+=data;  data_box_geo_num[col_start:col_start+data_col-1,line_start:line_start+data_line-1]+=(data gt 0.0)endfordata_box_geo_num=(data_box_geo_num gt 0.0)*data_box_geo_num+(data_box_geo_num eq 0.0)data_box_geo_avr=data_box_geo_sum/data_box_geo_numgeo_info={$MODELPIXELSCALETAG:[output_resolution,output_resolution,0.0],$MODELTIEPOINTTAG:[0.0,0.0,0.0,lon_min,lat_max,0.0],$GTMODELTYPEGEOKEY:2,$GTRASTERTYPEGEOKEY:1,$GEOGRAPHICTYPEGEOKEY:4326,$GEOGCITATIONGEOKEY:'GCS WGS_1984',$GEOGANGULARUNITSGEOKEY:9102,$GEOGSEMIMAJORAXISGEOKEY:6378137.0,$GEOGINVFLATTENINGGEOKEY:298.25722}write_tiff,output_name,data_box_geo_avr,geotiff=geo_info,/floatend_time=systime(1)print,'Time consuming: '+strcompress(string(end_time-start_time))
end

hdr转TIFF

在这里插入图片描述

七、tiff数据读取

[A,R] = geotiffread(filename)

相关文章:

AOD实践,modis数据下载,modis数据处理

modis数据下载-数据读取-重投影-拼接-均值 一、数据下载 1、Cygwin安装 Cygwin安装教程:https://blog.csdn.net/u010356768/article/details/90756742 1.2 数据采集 现提供遥感数据下载服务,主要是NASA数据,数据下载网站包括&#xff1a…...

常见的注册中心Nacos、Eureka

常见的注册中心 1.Eureka(原生,2.0遇到瓶颈,停止维护) 2.Zookeeper(支持,专业的独立产品。例如:dubbo) 3.Consul(原生,GO语言开发) 4.Nacos …...

逆向思维书籍推荐

《逆向思维》作者:德鲁克 《逆向思维法》作者:艾伦哈勃 《逆向思维:如何解决问题》作者:托尼布赖恩特 《逆向思维的力量》作者:李开复 《逆向思维:掌握创新的关键》作者:李嘉诚 《逆向思维》作…...

centos系统简析

服务器所使用的最多的系统之一便是Linux系统,Linux下centos系统也是常用的系统,今天来给大家详细说名下centos系统。 CentOS于2004年5月发布,作为一个完全免费且基于Linux内核的操作系统。CentOS 起源于 RHEL。其目标是提供一个免费提供的企…...

「SQL面试题库」 No_43 只出现一次的最大数字

🍅 1、专栏介绍 「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试&#xff0…...

TEB算法详解 参数详解

teb算法的基本思路之前已经看完了,今天主要看一下teb算法的参数配置文件,分析一下每个配置参数的作用: teb的参数主要可以包含以下几个部分: 1、Trajectory Trajectory的参数顾名思义,就是对路径生效的一些参数&…...

JavaSE学习进阶day05_03 泛型(进阶)

第五章 泛型&#xff0c;之前基础班学习过泛型&#xff0c;但是学的不深入 需要我们掌握的内容&#xff1a;&#xff08;掌握&#xff09; 1&#xff0c;如何使用一个带有泛型的类 2&#xff0c;如何使用一个带有泛型的方法 代码示例&#xff1a; ArrayList<String> lis…...

Flutter 布局探索 | 如何分析尺寸和约束

theme: cyanosis 前言 本文来分享一下&#xff0c;通过查看源码和布局信息解决的一个实际中的布局小问题&#xff0c;也希望通过本文的分享&#xff0c;当你遇到布局问题时&#xff0c;可以靠自己的脑子和双手解决问题。 如下所示&#xff0c;将 TextField 作为 AppBar 组件的 …...

01-Java基础知识面试题(2020最新版)

Java概述 何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码&#xff0c;并 终得到结果的过程。 为了使计算机能够理解人的意图&#xff0c;人类就必须要将需解决的问题的思路、方法、 和手段通过计算机能够理解的形式告诉计算机&#xff0c;使得…...

同一台电脑管理多个ssh key

默认情况下&#xff0c;我们在本地电脑生成的密钥都是 id_rsa 和 id_rsa.pub &#xff0c;git 默认情况下也只会读取这个私钥&#xff0c;所以我们需要修改一些配置来支持多个SSH Key。 本文基于Linux系统&#xff0c;Windows系统类似 第一步&#xff1a;生成ssh公私钥 ljhp…...

《UVM实战》学习笔记——第七章 UVM中的寄存器模型2——期望值/镜像值、自动/显示预测、操作方式

文章目录 前言一、寄存器模型对DUT的模拟1.1 期望值和镜像值1.2 常见操作对期望值和镜像值的影响 二、prediction分类2.1 自动预测2.2 显式预测 三、访问寄存器方式四、mem和reg的联系和差别五、内建built_in sequence5.1 寄存器模型内建序列5.2 存储器模型内建序列5.3 禁止域名…...

OFDM-LS信道估计 MMSE信道估计公式推导

假设ofdmN个子载波之间是完全正交的&#xff0c;即不考虑ICI影响&#xff0c;通过发送训练序列来实现信道估计。 其中&#xff0c;在推导6.8的时候&#xff0c;需要将6.6先拆解一下。 X − 1 Y X − 1 ( X H Z ) X − 1 X H X − 1 Z H X − 1 Z X^{-1}Y X^{-1}(XHZ)…...

业界内分布式锁

技术主题 在分布式系统中&#xff0c;面对分布式微服务日益流行的场景&#xff0c;分布式锁一直是分布式系统老生常谈的内容。分布式锁可以防止用户重复点击&#xff0c;对于电商场景中&#xff0c;分布式锁可以防止用户重复下单&#xff0c;给用户带来更好的体验。 技术实现…...

基于Java+Springboot+Vue+elememt甜品屋蛋糕商城系统设计和实现

基于JavaSpringbootVueelememt甜品屋蛋糕商城系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系…...

C/C++每日一练(20230424)

目录 1. 只出现一次的数字 &#x1f31f; 2. 有效的括号 &#x1f31f;&#x1f31f; 3. 递归反序正整数 &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 只出现一次…...

三百左右的蓝牙耳机哪个音质好?三百左右音质最好的蓝牙耳机推荐

在外出携带的数码产品中&#xff0c;蓝牙耳机的出现频率居高不下&#xff0c;一部手机&#xff0c;一副耳机已经成为不少人外出的标配。蓝牙耳机无外乎是用来听的&#xff0c;下面&#xff0c;我来给大家推荐几款三百左右音质好的蓝牙耳机&#xff0c;一起来看看吧。 一、南卡…...

把阿里大鸟花3个月时间整理的软件测试面经偷偷给室友,差点被他开除了···

写在前面 “这份软件测试面经看起来不错&#xff0c;等会一起发给他吧”&#xff0c;我看着面前的面试笔记自言自语道。 就在这时&#xff0c;背后传来了leder“阴森森”的声音&#xff1a;“不错吧&#xff0c;我可是足足花了三个月整理的” 始末 刚入职阿里的我收到了大学…...

跳槽时的决策逻辑是什么?

你好&#xff0c;我是辰洋&#xff0c;《郭东白的架构课》的项目负责人。 我们正文的第二个模块已经更新过半。之前已经预告过&#xff0c;东白老师会时不时邀请一些不同行业的技术领导者来交流与对话&#xff0c;为你提供更多的视角、更宽阔的视野和更多元的思考维度。 正值…...

vs2022下配置zxing cpp环境

生成zxing 下载zxing&#xff0c;zxing-cpp-master https://github.com/zxing-cpp/zxing-cpp Cmake生成项目&#xff0c;点Generate&#xff0c;把OpenCV_DIR修改了&#xff0c;NameValue没有报红就点Generate。然后点Open Project打开项目。 打开项目后&#xff0c;右击解决…...

【linux】linux入门级别指令

一些基础指令 前言用户登录新建用户 ls指令pwd命令cd 指令which指令alias指令touch指令mkdir指令rmdir指令 && rm 指令rmdirrm man指令cp指令mv指令catmoreless指令head 指令tail指令输出重定向时间相关的指令cal指令find指令grep指令zip/unzip指令tar指令bc指令uname指…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

GAN模式奔溃的探讨论文综述(一)

简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...

大模型真的像人一样“思考”和“理解”吗?​

Yann LeCun 新研究的核心探讨&#xff1a;大语言模型&#xff08;LLM&#xff09;的“理解”和“思考”方式与人类认知的根本差异。 核心问题&#xff1a;大模型真的像人一样“思考”和“理解”吗&#xff1f; 人类的思考方式&#xff1a; 你的大脑是个超级整理师。面对海量信…...