python地表温度反演
时间: 2025-02-08 20:07:20 浏览: 72
### 使用Python实现地表温度反演
#### 单窗算法简介
单窗算法是一种用于从热红外遥感数据中估算地表温度的方法。该方法利用单一通道的亮度温度并结合大气校正参数来计算实际的地表温度[^1]。
#### Python代码示例:基于Landsat 8 OLI/TIRS影像的数据处理
为了执行此过程,首先需要安装必要的库:
```bash
pip install numpy gdal matplotlib scipy rasterio
```
下面是一个完整的Python脚本,展示了如何读取Landsat 8 TIRS波段10(即短波红外线)图像文件,并应用单窗算法来进行地表温度反演:
```python
import numpy as np
from osgeo import gdal
import math
def read_tif(file_path):
"""Read GeoTIFF file."""
dataset = gdal.Open(file_path)
band_data = dataset.GetRasterBand(1).ReadAsArray().astype(np.float32)
return band_data, dataset
def calculate_brightness_temperature(dn_values, k1=774.89, k2=1321.08):
"""
Convert digital numbers (DN) to brightness temperature.
Args:
dn_values: Digital number values from the thermal infrared sensor.
k1: Calibration constant K1 for Band 10 of Landsat 8.
k2: Calibration constant K2 for Band 10 of Landsat 8.
Returns:
Brightness temperatures corresponding to input DN values.
"""
bt = (k2 / np.log(k1/dn_values + 1)) - 273.15 # Convert Kelvin to Celsius
return bt
def single_window_algorithm(bt, emissivity=0.99, atmospheric_transmittance=0.95):
"""
Apply Single Window Algorithm on brightness temperature.
Args:
bt: Array containing brightness temperatures.
emissivity: Emissivity value or array matching shape with `bt`.
atmospheric_transmittance: Atmospheric transmittance factor.
Returns:
Land surface temperature after applying SWA correction.
"""
lst = ((emissivity * bt)/(emissivity * atmospheric_transmittance))
return lst
# Example usage:
input_file = 'path_to_your_LC08_band_10_image.tif'
output_file = 'lst_result.tif'
band10_data, ds = read_tif(input_file)
brightness_temp = calculate_brightness_temperature(band10_data)
land_surface_temperature = single_window_algorithm(
brightness_temp,
emissivity=np.full_like(brightness_temp, fill_value=0.99),
atmospheric_transmittance=0.95
)
driver = gdal.GetDriverByName('GTiff')
out_ds = driver.CreateCopy(output_file, ds, strict=0)
out_band = out_ds.GetRasterBand(1)
out_band.WriteArray(land_surface_temperature)
del out_ds
```
这段程序实现了几个重要功能:
- **read_tif()**: 加载GeoTIFF格式的卫星影像。
- **calculate_brightness_temperature()**: 将原始数字数转换成亮度温度。
- **single_window_algorithm()**: 应用单窗算法调整亮度温度得到最终的地表温度估计值[^3]。
阅读全文
相关推荐

















