下面的代码实现的是加载伊宁市NDVI数据,首先进行相关的python包的导入,然后定义和读取我们需要加载的数据,这里我们使用的NDVI数据是将伊宁23年的NDVI数据合并成为了一张栅格图像,每个波段表示一年的 NDVI,我们这里显示NDVI以23年的平均值进行显示,由于源数据中NDVI被乘了1000,因此这里我们要除以1000,然后使用绘图语句进行绘图显示并加上相应的图例,结果如图1所示。
import rasterio
import numpy as np
import matplotlib.pyplot as plt# 定义 NDVI 栅格数据的路径
ndvi_file = "E:\Python\MODIS_NDVI_2023_ID_YiNing.tif"
# 读取 NDVI 栅格数据
with rasterio.open(ndvi_file) as src:# 读取 NDVI 栅格数据的所有波段ndvi_data = src.read()# 计算所有波段的平均值
mean_ndvi = np.mean(ndvi_data, axis=0)/1000.0# 绘制 NDVI 图像
plt.imshow(mean_ndvi, cmap='RdYlGn')
plt.colorbar(label='NDVI')
plt.title('Mean NDVI')
plt.xlabel('Column')
plt.ylabel('Row')# 添加图例
cbar = plt.colorbar()
cbar.set_label('NDVI')# 显示图像
plt.show()
【下面是这段代码的详细解释】
-
import
语句导入了所需的库,包括geopandas
、numpy
、matplotlib.pyplot
和rasterio
。 -
ndvi_file = "E:\Python\MODIS_NDVI_2023_ID_YiNing.tif"
:指定了 NDVI 栅格数据文件的路径。 -
with rasterio.open(ndvi_file) as src:
:使用rasterio
库打开指定路径的 GeoTIFF 文件,并将其作为src
对象进行处理。 -
ndvi_data = src.read()
:读取 NDVI 栅格数据的所有波段。 -
mean_ndvi = np.mean(ndvi_data, axis=0)/1000.0
:计算所有波段的平均 NDVI,并除以 1000。 -
plt.imshow(mean_ndvi, cmap='RdYlGn')
:使用imshow
函数绘制 NDVI 图像,参数cmap='RdYlGn'
指定了使用的 colormap。 -
plt.colorbar(label='NDVI')
:添加颜色条,指定标签为 'NDVI'。 -
plt.title('Mean NDVI')
:添加图像标题为 'Mean NDVI'。 -
plt.xlabel('Column')
、plt.ylabel('Row')
:添加 x 轴和 y 轴标签。 -
cbar = plt.colorbar()
:创建颜色条对象。 -
cbar.set_label('NDVI')
:设置颜色条标签为 'NDVI'。 -
plt.show()
:显示绘制好的 NDVI 图像。
图1|伊宁NDVI加载结果