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

news2024/11/23 22:57:42

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_mctk
  compile_opt idl2
  e=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/MCTK
    out_method = 1
    output_projection = envi_proj_create(/geographic)
    interpolation_method = 0
    print,output_rootname
    
    convert_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=msg
  endfor
  mctk_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_BATCH
  COMPILE_OPT IDL2
  ; 启动ENVI 5.1
  e = 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 BEGIN
    basename=file_basename(files[i]) ;获取输入影像文件名
    name=strmid(basename,0,20) ;获取指定范围名字
    
    for n=0, 12 do begin
      m=i+n
      basename_1=file_basename(files[m]) ;获取输入影像文件名
      name_1=strmid(basename_1,0,20) ;获取指定范围名字
      print,basename_1
      if name_1 ne name then break
      raster = e.OpenRaster(files[m])
      scenes = [scenes, raster]
    endfor
    i=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_average
  start_time= systime(1)
  input_directory= 'D:\study\AOD\Mosaicdata1\'
  output_directory=input_directory
  file_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.0
  lon_max=-9999.0
  lat_min=9999.0
  lat_max=-9999.0
  for file_i=0,file_n-1 do begin
    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_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_min
    if temp_lon_max gt lon_max then lon_max=temp_lon_max
    if temp_lat_min lt lat_min then lat_min=temp_lat_min
    if temp_lat_max gt lat_max then lat_max=temp_lat_max
  endfor

  ;经纬度数据存储
  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 begin
    print,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 begin
      for data_line_i=0,data_line-1 do begin
        temp_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 continue
        data_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.0
      endfor
    endfor


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

  endfor

  data_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_num

  geo_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,/float
  end_time=systime(1)
  print,'Time consuming: '+strcompress(string(end_time-start_time))
end

hdr转TIFF

在这里插入图片描述

七、tiff数据读取

[A,R] = geotiffread(filename)

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

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

相关文章

炸裂的 AutoGPT,鱼皮教你免费用!

大家好,我是鱼皮,继前段时间爆火的 ChatGPT 后,又一个炸裂的开源项目 Auto-GPT 出现了。 仅在最近 10 天,这个项目就收获了 8 万多个 star,目前总 star 数超过 10 万! 那 Auto-GPT 到底是个什么玩意&#x…

一文让你熟练使用 JSONObject 和 JSONArray

依赖 导入阿里的 fastjson 依赖。 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.78</version></dependency>类型转换 String 与 JSON 相互转换 通过 JSONObject.parseObject…

21、越狱调试

前言 调试一款应用,使用重签名方案,很容易被第三方察觉.在越狱环境中,我们可以在不污染App的情况下,对第三方程序进行动态调试 一、Reveal Reveal 是一款UI调试工具,对iOS逆向开发非常有帮助. 在Mac电脑中,安装Reveal软件: 密码 xclient.info 在手机中,安装Reveal插件打开C…

【京东】商品评价数据采集+买家评论数据+卖家评论数据采集+行业数据分析+行业数据质检分析

采集场景 京东商品详情页中的评价&#xff0c;有多个分类&#xff1a;【全部评价】、【晒图】、【视频晒单】、【追评】、【好评】、【中评】、【差评】。其中【全部评价】默认展现&#xff0c;其他需点击后展现。本文以按【差评】筛选采集为例讲解。实例网址&#xff1a;http…

MySQL-----复合查询

文章目录 前言一、基本查询回顾二、 多表查询解决多表查询的思路 三、自连接四、子查询1. 单行子查询2. 多行子查询3. 多列子查询4. 在from子句中使用子查询5. 合并查询5.1 union5.2 unoin all 总结 前言 前面的学习中,对于mysql表的查询都是对一张表进行查询,在实际开发中这远…

快速入门git(收藏篇)

大致总结&#xff1a; 本地仓库要先去github注册&#xff0c;并通过github的验证。于是本地仓库的文件均可通过协议传输至github任意一个仓库。本地文件要先传到本地仓库&#xff0c;由本地仓库传输至远程github仓库。 在详细学习git之前&#xff0c;我们先来看看Git和svn之间…

系统集成项目管理工程师 笔记(第七章:项目范围管理)

文章目录 7.1.1 项目范围管理的含义及作用7.1.2 项目范围管理的主要过程&#xff08;6个&#xff09; 7.2 编制范围管理计划和范围说明书 2687.2.1 编制范围管理计划过程所用的工具与技术7.2.2 编制范围管理计划过程的输入、输出 7.3 收集需求 2717.3.1 收集需求过程的工具与技…

java 网络编程总结

目录 一、拾枝杂谈 1.网络通信 : 2.网络 : 3.IP : 4.IPv4的ip地址分类 : 5.域名和端口 : 6.网络协议 : 二、网络编程 1.InetAddress : 1 常用方法 : 2 代码演示 : 2.Socket : 1 概述 : 2 代码演示 : eg1 : 客户端连接服务端 eg2 : 结束标记 eg3 : 网络传输文件…

Linux设置进程自启动

systemd学习 http://www.jinbuguo.com/systemd/systemctl.html https://blog.csdn.net/sinat_35815559/article/details/102867290 常用命令 立即启动一个服务&#xff1a; systemctl start xxx.service立即停止一个服务&#xff1a; systemctl stop xxx.service重启一个服…

跌倒检测和识别4:C++实现跌倒检测(含源码,可实时跌倒检测)

跌倒检测和识别4&#xff1a;C实现跌倒检测(含源码&#xff0c;可实时跌倒检测) 目录 跌倒检测和识别4&#xff1a;C实现跌倒检测(含源码&#xff0c;可实时跌倒检测) 1. 前言 2. 跌倒检测模型&#xff08;YOLOv5&#xff09; &#xff08;1&#xff09;跌倒检测模型训练 …

第14届蓝桥杯 | 冶炼金属

作者&#xff1a;指针不指南吗 专栏&#xff1a;第14届蓝桥杯真题 &#x1f43e;慢慢来&#xff0c;慢慢来&#x1f43e; 文章目录 题目代码摸索第一次 AC 5/10第二次 AC 100% 反思 题目 链接&#xff1a; 4956. 冶炼金属 - AcWing题库 小蓝有一个神奇的炉子用于将普通金属 O …

【LeetCode】数据结构刷题(2)[查找链表的中间节点]

【LeetCode】数据结构刷题&#xff08;2&#xff09; 1.题目来源2.题目描述3.解题思路4.代码展示5.类似题目练习 所属专栏&#xff1a;玩转数据结构题型 博主首页&#xff1a;初阳785 代码托管&#xff1a;chuyang785 感谢大家的支持&#xff0c;您的点赞和关注是对我最大的支持…

自动驾驶方案及相关对标

华为&#xff1a; 2021年4月18日&#xff0c;在华为智能汽车解决方案BU新品发布会上&#xff0c;华为智能汽车解决方案BU总裁王军表示&#xff0c;华为要持续加大对汽车行业的投入&#xff0c;今年在研发上的投资将达到10亿美元&#xff0c;未来每年保持30%左右增长&#xff0…

three.js的着色器(巨详细 初学者 大白话)

three.js就不过多介绍了 可以看另一篇文章 总结就是场景 相机 和 渲染器 学起来 也比较轻松 后来看到了着色器 给我整懵乐了 一会一个API 一会一个API 都没见过 然后就一点点去学习 真的是费了好大劲了 需要知道很多新东西 才能初步知道和使用着色器 当然如果只是简单的使…

docker-harbor私有仓库的部署与管理

目录 Harbor Harbor介绍 Harbor的特性 Harbor的构成 部署Harbor 搭建本地私有仓库 Docker容器的重启策略 部署Docker-compose服务 部署Harbor服务 关于Harbor.cfg配置文件中两类参数 启动Harbor 查看 Harbor 启动镜像 创建一个新项目 在其他客户端上传镜像 维护管…

如何创建 2023 年营销日历(内含免费模板和示例)

沟通、文案撰写、社媒营销、点击付费广告、事件营销和搜索引擎排名优化有什么共同点&#xff1f; 它们都属于营销部门的工作范畴&#xff0c;而且很可能是围绕着同一个日程表进行工作排期。 你的营销团队比你想象的要大&#xff0c;当你考虑跨职能项目和团队成员在你整体战略…

ImageJ 用户手册——第四部分(ImageJ用户界面)

ImageJ 用户手册——第四部分&#xff08;ImageJ用户界面&#xff09; ImageJ用户界面工具栏&#xff08;Toolbar&#xff09;状态栏进度条19. 工具19.1 区域选择工具19.1.1 矩形选择工具19.1.2 圆角矩形选择工具19.1.3 圆形选择工具19.1.4 椭圆选择工具19.1.5 笔刷选择工具19.…

内网渗透基础-域环境搭建

一、环境准备 1.1虚拟机安装 Mac环境&#xff1a; vmware fusion&#xff1b;parallels desktop。 windows环境&#xff1a; vmware&#xff1b;virtualbox; 有习惯用其他软件的也都一样的&#xff0c;下载安装可以找百度教程。 1.2虚拟机三种网络配置模式 桥接模式&am…

塔望3W消费战略全案丨阳澄湖牌大闸蟹:承诺就是价值,打响官方第一枪

阳澄湖牌 大闸蟹 客户&#xff1a;苏州市阳澄湖大闸蟹营销有限公司 品牌&#xff1a;阳澄湖/阳澄湖牌 服务&#xff1a;3W消费战略 品牌全案 项目背景 苏州市阳澄湖大闸蟹营销有限公司是由苏州市相城区阳澄湖大闸蟹集团公司、苏州市阳澄湖现代农业产业园特种水产养殖有限公…

Springboot整合elasticsearch

​ 前言 elasticsearch基本介绍&#xff0c;这篇文章介绍了elasticsearch安装和使用。下面根据网上查来的各种资料&#xff0c;总结如何在springboot中使用elasticsearch。 文章中用es代替elasticsearch。 依赖 springboot版本是2.0&#xff0c;es版本用的是7.6.2。不同的…