批量实现modis数据的辐射定标,大气校正及地形校正

1.定义辐射定标函数

def radiance_cal(band, gain, bias, scale_factor):rad = gain * (band - bias) * scale_factorreturn rad

2.定义反射率计算函数

def reflectance_cal(rad, esun, d):refl = np.pi * rad * d ** 2 / (esun * np.cos(np.deg2rad(sza)))return refl

3.获取增益、偏移和比例因子等信息

meta = modis_file.GetMetadata('SUBDATASETS')
gain = float(meta['gain'])
bias = float(meta['bias'])
scale_factor = float(meta['scale_factor'])
esun = float(meta['esun'])
d = float(meta['distance'])
sza = float(meta['sza'])

4.可视化输出结果

xsize = modis_file.RasterXSize
ysize = modis_file.RasterYSize
gt = modis_file.GetGeoTransform()
xmin, xres, _, ymax, _, yres = gt
xmax = xmin + xsize * xres
ymin = ymax + ysize * yres
xx, yy = np.meshgrid(np.linspace(xmin, xmax, xsize), np.linspace(ymin, ymax, ysize))
xy = np.column_stack((xx.flatten(), yy.flatten()))
xy = np.flipud(xy)
values = np.flipud(reflectance).ravel()
grid = griddata(xy, values, (xx, yy), method='cubic')
plt.imshow(grid, cmap='gray')
plt.show()

5.批量执行 MODIS 数据的辐射校正、大气校正和地形校正
完整代码

import os
import numpy as np
from osgeo import gdal# 设置 MODIS 文件路径
data_dir = "/path/to/modis/data/"# 设置输出文件路径
out_dir = "/path/to/output/dir/"# 加载大气校正和地形校正模块
import spectral
import spectral.io.envi as envi# 加载 MODIS 文件列表
file_list = os.listdir(data_dir)# 循环处理每个 MODIS 文件
for file_name in file_list:if file_name.endswith(".hdf"):# 设置输出文件名out_name = file_name.replace(".hdf", ".tif")# 定义函数,用于执行辐射校正def radiance_correction(file_name, out_dir, out_name):# 加载 MODIS 数据hdf_file = gdal.Open(os.path.join(data_dir, file_name), gdal.GA_ReadOnly)subdatasets = hdf_file.GetSubDatasets()# 选择辐射数据集radiance_subdataset = Nonefor i in subdatasets:if "Radiance" in i[0]:radiance_subdataset = i[0]breakif radiance_subdataset is None:raise Exception("Radiance subdataset not found in HDF file.")# 加载辐射数据radiance_data = gdal.Open(radiance_subdataset, gdal.GA_ReadOnly)radiance_band = radiance_data.GetRasterBand(1)radiance_array = radiance_band.ReadAsArray()# 加载定标数据calibration_subdataset = Nonefor i in subdatasets:if "Reflectance" in i[0]:calibration_subdataset = i[0]breakif calibration_subdataset is None:raise Exception("Reflectance subdataset not found in HDF file.")calibration_data = gdal.Open(calibration_subdataset, gdal.GA_ReadOnly)# 加载定标参数slope_band = calibration_data.GetRasterBand(1)slope_array = slope_band.ReadAsArray()intercept_band = calibration_data.GetRasterBand(2)intercept_array = intercept_band.ReadAsArray()# 执行辐射校正radiance_array = radiance_array * slope_array + intercept_array# 保存结果out_driver = gdal.GetDriverByName("GTiff")out_file = out_driver.Create(os.path.join(out_dir, out_name), radiance_band.XSize, radiance_band.YSize, 1, radiance_band.DataType)out_file.GetRasterBand(1).WriteArray(radiance_array)# 释放资源out_file.FlushCache()out_file = Noneradiance_band = Noneradiance_data = Nonehdf_file = Nonegdal.UseExceptions()# 执行辐射校正radiance_correction(file_name, out_dir, out_name)# 加载辐射校正结果radiance_file = os.path.join(out_dir, out_name)radiance_data = gdal.Open(radiance_file, gdal.GA_ReadOnly)radiance_band = radiance_data.GetRasterBand(1)radiance_array = radiance_band.ReadAsArray

【python】批量实现modis数据的辐射定标,大气校正及地形校正相关推荐

  1. 用python批量下载modis数据的速度怎么样_MODIS数据的简介和下载(五)——应用密钥的Python脚本下载...

    接上文,由于NASA官方弃用了FTP改用HTTPS服务,所以关于MODIS数据的下载方式有所改变.完整系列博客可以参照以下链接.本篇主要接着上一篇没有讲完的应用密钥的脚本下载介绍. 1 官方教程与说明 ...

  2. python批量下载modis数据(可筛选日期、范围、数据类型)

    找了一圈下modis数据的,有的不能空间筛选有的不能下初级产品(也可能没找到),不甚满意,自己搞了个 23年2月3日更新,原文章里获取所有a标签的地址这一步可以替换为更新章节里直接通过接口获取了. 更 ...

  3. 用python批量下载modis数据的速度怎么样_批量下载MODIS数据

    首先呢,说明一下,这个专栏主要记录一点IDL处理数据的一些小.因为自己学的是遥感,IDL初步在学,平时会写一点小程序处理一些数据.所以就想分享一下. 需要的软件 IDL和IDM IDM下载链接:htt ...

  4. 关于批量下载MODIS数据的坑

    关于批量下载MODIS数据的坑与正确姿势 1. 第一个坑 1.1 Ladsweb的坑 由于之前做项目的时候去Ladsweb官网下载数据的时候还好好的,于是经过被批评改正之后回来就信心满满地去Ladsw ...

  5. python 调用HEG工具批量处理modis数据将hdf转为tif

    python 调用HEG工具批量处理modis数据将hdf转为tif 搞了2.3天才搞定,在这里做个记录,希望 可以帮到需要的朋友. HEG工具安装需要的准备工作: 一.. JAVA安装. 电脑上没有 ...

  6. python modis数据拼接_python调用HEG工具批量处理MODIS数据的方法及注意事项

    下面的代码主要用于使用python语言调用NASA官方的MODIS处理工具HEG进行投影坐标转换与重采样批量处理 主要参考 HEG的用户手册:https://newsroom.gsfc.nasa.go ...

  7. python批处理工具_python调用HEG工具批量处理MODIS数据的方法及注意事项

    下面的代码主要用于使用python语言调用NASA官方的MODIS处理工具HEG进行投影坐标转换与重采样批量处理 主要参考 HEG的用户手册:https://newsroom.gsfc.nasa.go ...

  8. ENVI软件对Landsat-8数据进行辐射定标、大气校正、提取NDVI、估算植被覆盖度等操作【图说GIS】

    目录 一.前言 二.数据下载 第一步 访问网站 第二步 登录账户 第三步 点击高级检索, 下载数据 三.软件下载及安装 四.辐射定标 第一步 打开数据 第二步 辐射定标 五.计算区域平均高程 第一步 ...

  9. 使用python批量下载天猫数据并进行合并(非爬虫)

    使用python批量下载天猫数据并进行合并(非爬虫) 做电商运营少不了数据分析支持,无论是选品.选关键词.研究竞品还是开直通车.店铺引流都需要有数据支持.不过生意参谋虽然强大,但现在都只能显示&quo ...

最新文章

  1. CREATE SEQUENCE添加自增序列及NEXT VALUE FOR返回序列号
  2. CSS背景不透明度[重复]
  3. VMWare虚拟机下为Ubuntu 12.04.1配置静态IP(NAT连接方式)
  4. Spring的IOC原理(通俗解释)
  5. MIT算法导论(一)——算法分析和引论
  6. java mssql mysql,在JSP中访问MSSQLServer数据库_MySQL
  7. PowerShell3.0入门视频(由Jeffrey Snover和Jason Helmick主讲)
  8. iptables 开启3306端口
  9. 3像素尺寸是多少_纸张的尺寸
  10. 【2021团体程序设计天梯赛】L2部分(PTA,L2-037到L2-040)题解代码复盘
  11. 视听说加速器_腾讯加速器台服专享加速线路已开通,多款手游一键即可免费加速!...
  12. 在手机/平板上安装kali系统
  13. access如何求平均单价_数据库 – MS Access:单个查询中的平均值和总计算量
  14. ibatis 大于等于小于等于的写法
  15. java Web 前后端交互
  16. 【Python】安装PIL (Python Imaging Library )
  17. JCMsuite应用:光学环形谐振腔模拟
  18. 服务器显示无internet,为何我可以上网,但却显示无internet访问
  19. 12345,教你画好线框图
  20. 不想使用notepad++,快使用notepad--来替换

热门文章

  1. seo网站优化的金字塔模型
  2. 如何用google translate API接口
  3. 你应该成为公司需要的人还是成为自己想成为的人
  4. node.js的安装配置教程
  5. c语言 ipc 参数 序列化,c语言编译原理及IPC通信经典面试题
  6. 4 ARM PEG20K MAL
  7. 原生 hadoop安装
  8. [2016 T-EDGE]王坚对话无人机教父:创新就要享受走在悬崖边的刺激
  9. 版本控制系统-集中式与分布式的区别
  10. 不用的MacBook这样处理比较好