解释

1.MOD09A1是表观反射率产品,是HDF格式并且投影和常用的Landsat数据不一致。为了统一反演时使用,想要将该产品转换为TIFF格式并重投影。特别是要批量的进行转换和重投影。

2.采用Python和GDAL进行转换,其中采用的包为:

  • gdal
  • numpy
  • os

其中,os自带,numpy极为常用,gdal需要自己装

  1. 将除了8,12,13的波段合为一个多波段的数据,其中1-7为反射率数据,波段范围参看MOD09A1文档中的说明。8,9,10波段为太阳天顶角、观测天顶角和相对方位角,可用于反演。如需使用8、12、13三个质量控制波段,可根据代码自行修改,注意这三个波段的数据类型与其他波段不一致,需要特别关注。

3.用的时候首先创建一个文件夹,把下载的MOD09A1产品都放进去,然后创建一个输出文件夹。将这两个文件夹名字在代码中一上来制定输入输出的地方进行替换,运行即可。输出为多波段文件和重投影过后的多波段文件。

4.代码粗糙,本着能用就行的思想,结构也非常简单,不能做到通用化。

from osgeo import gdal
import numpy as np
import os#  gdal打开hdf数据集
# MOD09A1表观反射率数据
input_file_dir = "time_series"
output_file_dir = "time_series_tif"height = width = 2400
N_layers = 13# =============================================
file_list = os.listdir(input_file_dir)
if os.path.exists(input_file_dir) == False:Exception("input file dir does not exist.")
if os.path.exists(output_file_dir) == False:os.mkdir(output_file_dir)print("make dir: ", output_file_dir, ".")for file in file_list:if file.endswith('hdf'):path = os.path.join(input_file_dir, file)datasets = gdal.Open(path)#  获取hdf中的子数据集SubDatasets = datasets.GetSubDatasets()Metadata = datasets.GetMetadata()o_data = np.zeros((height, width, N_layers))for n_layer in range(N_layers):#  获取要转换的子数据集if n_layer == 7 or n_layer == 11 or n_layer == 12:# 三个质量控制波段,且数据类型和反射率、角度波段不一致,不用continuedata_name = datasets.GetSubDatasets()[n_layer][0]raster_data = gdal.Open(data_name)o_data[:, :, n_layer] = raster_data.ReadAsArray()basename = '.'.join(file.split(".")[0:5])TifName = os.path.join(output_file_dir, (basename + "_2tif.tif"))datatype = raster_data.GetRasterBand(1).DataTypefile_driver = gdal.GetDriverByName('GTiff')o_dataset = file_driver.Create(TifName, width, height, N_layers-3, datatype)o_dataset.SetGeoTransform(raster_data.GetGeoTransform())o_dataset.SetProjection(raster_data.GetProjection())for band in range(N_layers-3):o_dataset.GetRasterBand(band + 1).WriteArray(o_data[:, :, band])o_dataset.FlushCache()#  保存为tifproj_TifName = os.path.join(output_file_dir, (basename + "_2tif_proj.tif"))print("saving:", TifName)print("saving:", proj_TifName)geoData = gdal.Warp(proj_TifName, o_dataset,dstSRS = 'EPSG:4326', format = 'GTiff',resampleAlg = gdal.GRA_Bilinear)else:continue

利用Python和GDAL把MODIS的HDF格式表观反射率产品MOD09A1转换为TIFF格式并重投影到与LANDSAT8-OLI一致相关推荐

  1. Python中ArcPy实现栅格图像文件由HDF格式批量转换为TIFF格式

      本文介绍基于Python中Arcpy模块,实现大量HDF格式的栅格图像文件批量转换为TIFF格式的方法.   首先,来看看我们想要实现的需求.   在一个名为HDF的文件夹下,有五个子文件夹:每一 ...

  2. python matplotlib模块画出的图像转换为.tiff格式

    利用python matplotlib模块(python3.7.1)画出的图表暂不支持直接导出.tiff格式的图片,但是可以导出eps, pdf, pgf, png, ps, raw, rgba, s ...

  3. 用 python 脚本+ffmpeg,把当前目录及子目录下的 wma音频文件转换为mp3 格式

    用 python 脚本+ffmpeg,把当前目录及子目录下的 wma音频文件转换为mp3 格式 用 python 脚本,结合ffmpeg软件,把当前目录及子目录下的 wma 音频文件转换为 mp3 格 ...

  4. 用python打印九九乘法表while_利用Python循环(包括whilefor)各种打印九九乘法表的实例...

    一.for循环打印九九乘法表 #注意:由于缩进在浏览器不好控制,请大家见谅,后续会有图片传入. 1.1 左下角 for i in range(1,10): for j in range(1,i+1): ...

  5. python 数据分析学什么-利用Python做数据分析 需要学习哪些知识

    根据调查结果,十大最常用的数据工具中有八个来自或利用Python.Python广泛应用于所有数据科学领域,包括数据分析.机器学习.深度学习和数据可视化.不过你知道如何利用Python做数据分析吗?需要 ...

  6. 【Python数据分析】利用Python快速对两个EXCEL表格进行内容比较并找出差异

    如何快速找到两个EXCEL表格的数据差异?今天就与大家分享如何利用Python数据分析3分钟搞定,不管EXCEL表格有多少行数据,代码总是那么几行.不多说了,上案例(文末附Python数据分析案例下载 ...

  7. 利用python把dcm格式转化为jpg格式

    dcm文件是DICOM(Digital Imaging and Communications in Medicine)即医学数字成像和通信中记录医学图像和相关信息的文件,在用于医学图像处理的时候我们需 ...

  8. python 读取geotiff_科学网—利用python GDAL库读写geotiff格式的遥感影像方法 - 张伟的博文...

    (1)利用python GDAL库读写geotiff格式的遥感影像方法,具有很好的参考价值,不错! from osgeo import gdal import numpy as np def read ...

  9. python读取tiff影像_科学网—利用python GDAL库读写geotiff格式的遥感影像方法 - 张伟的博文...

    (1)利用python GDAL库读写geotiff格式的遥感影像方法,具有很好的参考价值,不错! from osgeo import gdal import numpy as np def read ...

最新文章

  1. wp7 关于真机调试,部署注意事项
  2. 基于MATLAB的TDOA算法的仿真
  3. 23种设计模式C++源码与UML实现--工厂模式
  4. 数据科学中的数据可视化
  5. 各种推荐资料汇总。。。
  6. LeetCode 第 24 场双周赛(326/1898,前17.2%)
  7. retinanet 部署_再谈RetinaNet
  8. ovs ovn 学习资料
  9. linux iptables服务及相关命令
  10. 书籍-Linux运维之道
  11. 极米旗舰级新品极米H5强势来袭:画质性能在线,硬核配置拉满
  12. 6.5-6.7 理解线性方程组解的结构
  13. iPhone如何下载Skype_详细教程
  14. 两总体均值之差的推断:匹配样本
  15. 为什么需要运营商级NAT设备?
  16. 分享 70 个你可能会用到的正则表达式
  17. 计算机应用基础模拟试卷 一,计算机应用基础模拟试卷一模拟试卷-02answer
  18. CSC Matrix
  19. 微软pop3服务器,真算孤陋寡闻。。微软旗下的邮箱都支持POP3收发邮件了
  20. 烧写文件格式介绍(ELF、HEX、BIN)

热门文章

  1. 带有备忘录的递归算法
  2. 算法复杂度分析(渐近记号)
  3. 下班时间到了,老板没走,你敢下班走人吗?
  4. C++编程实现itoa和atoi函数
  5. 高速PCB Layout设计要用哪些工具?
  6. Android学习|布局——TableLayout 表格布局
  7. pc/sc 编程_烟灰_百度空间
  8. ECharts使用心得总结
  9. 栈的应用以及队列相关知识整理
  10. LotWan-单边加速的广域网加速系统