import rasterio
import numpy as np
def calculate_ndvi(red_band_path, nir_band_path):
# 打开红光波段和近红外波段的反射率数据文件
with rasterio.open(red_band_path) as red_band, rasterio.open(nir_band_path) as nir_band:
# 读取红光波段和近红外波段的反射率数据
red = red_band.read(1)
nir = nir_band.read(1)
# 避免除以零的情况
divisor = (nir + red).astype(float)
divisor[divisor == 0] = 1.0 # 将零分母替换为1.0
# 计算NDVI
ndvi = (nir - red) / divisor
# 创建输出文件
profile = red_band.profile # 使用红光波段的元数据作为输出文件的元数据
profile.update(count=1, dtype=rasterio.float32)
with rasterio.open(output_path, 'w', **profile) as dst:
dst.write(ndvi.astype(np.float32), 1)
print(ndvi)
return ndvi
# 输入文件路径和输出路径
red_band_path = 'E:/.tif'
nir_band_path = 'E:/.tif'
output_path = 'E:/.tif'
# 计算NDVI
ndvi_result = calculate_ndvi(red_band_path, nir_band_path)
计算归一化植被指数
最新推荐文章于 2024-10-03 09:02:12 发布