使用ENVI IDL写一段对FY-3D一级产品进行预处理并按照最大值合成日均NDVI的代码
时间: 2023-07-15 22:12:39 浏览: 171
基于IDL语言编写NDVI计算程序源代码
由于FY-3D的一级产品数据格式不同,这里提供一个大致思路,需要根据实际情况进行调整。
1. 读取FY-3D一级产品的数据,包括反射率和太阳高度角等信息。
```
file_ref = 'FY3D_REFLECTANCE.h5'
file_sza = 'FY3D_SOLAR_ZENITH_ANGLE.h5'
ref = ENVIRaster(file_ref, 'REFLECTANCE')
sza = ENVIRaster(file_sza, 'SOLAR_ZENITH_ANGLE')
```
2. 进行大气校正,使用MODTRAN模型计算大气透过率和大气散射率,然后将其应用于反射率数据中。
```
tau, ssa = calculate_atmospheric_parameters(sza)
ref_corr = ref / tau - ssa
```
3. 计算NDVI,需要用到红光波段和近红外波段的反射率数据。
```
red = ref_corr[3] # 假设红光波段为第4个波段
nir = ref_corr[6] # 假设近红外波段为第7个波段
ndvi = (nir - red) / (nir + red)
```
4. 对NDVI进行日均合成,即取每个像元在一天内的最大值。
```
ndvi_daily = ndvi.max(axis=0)
```
5. 输出结果。
```
ENVISaveImage(ndvi_daily, 'FY3D_NDVI_DAILY', 'ENVI', metadata=ref.metadata)
```
阅读全文