NDVI(Normalized Difference Vegetation Index,归一化植被指数)是一种常用的遥感影像特征,用于评估地表植被覆盖状况,计算NDVI的公式为:NDVI = (NIR RED) / (NIR + RED),其中NIR表示近红外波段的反射率,RED表示红光波段的反射率,在Python中,我们可以使用rasterio和numpy库来计算NDVI。
以下是一个简单的Python程序,用于计算NDVI:
1、安装所需的库:
pip install rasterio numpy
2、编写计算NDVI的程序:
import rasterio import numpy as np def calculate_ndvi(red_band, nir_band): """ 计算NDVI :param red_band: 红光波段的rasterio.open()对象 :param nir_band: 近红外波段的rasterio.open()对象 :return: NDVI数组 """ red_data = red_band.read(1) nir_data = nir_band.read(1) # 将数据转换为numpy数组 red_array = np.array(red_data) nir_array = np.array(nir_data) # 计算NDVI ndvi_array = (nir_array red_array) / (nir_array + red_array) return ndvi_array 读取红光波段和近红外波段的遥感影像 with rasterio.open('red_band.tif') as red_band, rasterio.open('nir_band.tif') as nir_band: # 计算NDVI ndvi_array = calculate_ndvi(red_band, nir_band) # 将NDVI数组保存为GeoTIFF文件 with rasterio.open('ndvi.tif', 'w', driver='GTiff', height=ndvi_array.shape[0], width=ndvi_array.shape[1], count=1, dtype=ndvi_array.dtype, crs='+proj=latlong', transform=red_band.transform) as out_band: out_band.write(ndvi_array, 1)
在这个程序中,我们首先导入了rasterio和numpy库,我们定义了一个名为calculate_ndvi的函数,该函数接受红光波段和近红外波段的rasterio.open()对象作为输入参数,并返回一个NDVI数组,在函数内部,我们首先读取红光波段和近红外波段的数据,然后将它们转换为numpy数组,接下来,我们使用给定的公式计算NDVI,我们将NDVI数组保存为GeoTIFF文件。
在主程序中,我们使用rasterio.open()函数读取红光波段和近红外波段的遥感影像,我们调用calculate_ndvi函数计算NDVI,我们将NDVI数组保存为GeoTIFF文件。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/468719.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复