【python】批量实现modis数据的辐射定标,大气校正及地形校正
批量实现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数据的辐射定标,大气校正及地形校正相关推荐
- 用python批量下载modis数据的速度怎么样_MODIS数据的简介和下载(五)——应用密钥的Python脚本下载...
接上文,由于NASA官方弃用了FTP改用HTTPS服务,所以关于MODIS数据的下载方式有所改变.完整系列博客可以参照以下链接.本篇主要接着上一篇没有讲完的应用密钥的脚本下载介绍. 1 官方教程与说明 ...
- python批量下载modis数据(可筛选日期、范围、数据类型)
找了一圈下modis数据的,有的不能空间筛选有的不能下初级产品(也可能没找到),不甚满意,自己搞了个 23年2月3日更新,原文章里获取所有a标签的地址这一步可以替换为更新章节里直接通过接口获取了. 更 ...
- 用python批量下载modis数据的速度怎么样_批量下载MODIS数据
首先呢,说明一下,这个专栏主要记录一点IDL处理数据的一些小.因为自己学的是遥感,IDL初步在学,平时会写一点小程序处理一些数据.所以就想分享一下. 需要的软件 IDL和IDM IDM下载链接:htt ...
- 关于批量下载MODIS数据的坑
关于批量下载MODIS数据的坑与正确姿势 1. 第一个坑 1.1 Ladsweb的坑 由于之前做项目的时候去Ladsweb官网下载数据的时候还好好的,于是经过被批评改正之后回来就信心满满地去Ladsw ...
- python 调用HEG工具批量处理modis数据将hdf转为tif
python 调用HEG工具批量处理modis数据将hdf转为tif 搞了2.3天才搞定,在这里做个记录,希望 可以帮到需要的朋友. HEG工具安装需要的准备工作: 一.. JAVA安装. 电脑上没有 ...
- python modis数据拼接_python调用HEG工具批量处理MODIS数据的方法及注意事项
下面的代码主要用于使用python语言调用NASA官方的MODIS处理工具HEG进行投影坐标转换与重采样批量处理 主要参考 HEG的用户手册:https://newsroom.gsfc.nasa.go ...
- python批处理工具_python调用HEG工具批量处理MODIS数据的方法及注意事项
下面的代码主要用于使用python语言调用NASA官方的MODIS处理工具HEG进行投影坐标转换与重采样批量处理 主要参考 HEG的用户手册:https://newsroom.gsfc.nasa.go ...
- ENVI软件对Landsat-8数据进行辐射定标、大气校正、提取NDVI、估算植被覆盖度等操作【图说GIS】
目录 一.前言 二.数据下载 第一步 访问网站 第二步 登录账户 第三步 点击高级检索, 下载数据 三.软件下载及安装 四.辐射定标 第一步 打开数据 第二步 辐射定标 五.计算区域平均高程 第一步 ...
- 使用python批量下载天猫数据并进行合并(非爬虫)
使用python批量下载天猫数据并进行合并(非爬虫) 做电商运营少不了数据分析支持,无论是选品.选关键词.研究竞品还是开直通车.店铺引流都需要有数据支持.不过生意参谋虽然强大,但现在都只能显示&quo ...
最新文章
- CREATE SEQUENCE添加自增序列及NEXT VALUE FOR返回序列号
- CSS背景不透明度[重复]
- VMWare虚拟机下为Ubuntu 12.04.1配置静态IP(NAT连接方式)
- Spring的IOC原理(通俗解释)
- MIT算法导论(一)——算法分析和引论
- java mssql mysql,在JSP中访问MSSQLServer数据库_MySQL
- PowerShell3.0入门视频(由Jeffrey Snover和Jason Helmick主讲)
- iptables 开启3306端口
- 3像素尺寸是多少_纸张的尺寸
- 【2021团体程序设计天梯赛】L2部分(PTA,L2-037到L2-040)题解代码复盘
- 视听说加速器_腾讯加速器台服专享加速线路已开通,多款手游一键即可免费加速!...
- 在手机/平板上安装kali系统
- access如何求平均单价_数据库 – MS Access:单个查询中的平均值和总计算量
- ibatis 大于等于小于等于的写法
- java Web 前后端交互
- 【Python】安装PIL (Python Imaging Library )
- JCMsuite应用:光学环形谐振腔模拟
- 服务器显示无internet,为何我可以上网,但却显示无internet访问
- 12345,教你画好线框图
- 不想使用notepad++,快使用notepad--来替换