
本文介绍了如何使用 Python 编程提取栅格图像(如 NDVI 图像)中,多个多边形内部以及多边形外部的平均 NDVI 值。主要依赖 rasterio 和 fiona 库,通过加载矢量多边形数据,裁剪栅格图像,并计算裁剪区域的平均值,从而实现 NDVI 值的提取和分析。本文提供代码示例,帮助读者理解和应用相关技术。
正文
本文将指导您如何使用 Python 提取栅格数据(例如 NDVI 图像)中多边形内部和外部的平均值。 我们将使用 rasterio 和 fiona 库来完成此任务。 rasterio 用于读取和写入栅格数据,而 fiona 用于读取矢量数据(例如 shapefile)。
准备工作
立即学习“Python免费学习笔记(深入)”;
在开始之前,请确保已安装以下 Python 库:
您可以使用 pip 安装这些库:
pip install rasterio fiona numpy
代码实现
以下代码演示了如何提取多边形内部和外部的平均 NDVI 值:
import rasterio
import fiona
import rasterio.mask
import numpy as np
# 1. 定义输入文件路径
shapefile_path = "path/to/your/shapefile.shp"  # 替换为你的 shapefile 文件路径
raster_path = "path/to/your/ndvi.tif"  # 替换为你的 NDVI 栅格文件路径
# 2. 加载 shapefile 中的多边形
with fiona.open(shapefile_path, "r") as sf:
    shapes = [feature["geometry"] for feature in sf]
# 3. 读取栅格数据
with rasterio.open(raster_path) as src:
    # 3.1 提取多边形内部的 NDVI 值
    out_image, out_transform = rasterio.mask.mask(src, shapes, crop=True)
    # 清理无效值(例如 NaN 或 NoData 值)
    masked_array = np.ma.masked_invalid(out_image)
    NDVI_mean_inside = np.mean(masked_array)
    # 3.2 提取多边形外部的 NDVI 值
    out_image_outside, out_transform_outside = rasterio.mask.mask(src, shapes, crop=True, invert=True)
    # 清理无效值(例如 NaN 或 NoData 值)
    masked_array_outside = np.ma.masked_invalid(out_image_outside)
    NDVI_mean_outside = np.mean(masked_array_outside)
# 4. 打印结果
print(f"多边形内部平均 NDVI 值: {NDVI_mean_inside}")
print(f"多边形外部平均 NDVI 值: {NDVI_mean_outside}")代码解释
注意事项
总结
本文介绍了使用 Python 和 rasterio、fiona 库提取栅格数据中多边形内部和外部平均 NDVI 值的方法。 通过加载 shapefile,裁剪栅格数据,并计算裁剪区域的平均值,您可以轻松地提取和分析特定区域的 NDVI 值。 这种方法可以应用于各种遥感应用,例如土地覆盖分类,植被监测和环境评估。
以上就是使用 Python 提取栅格数据中多边形内外 NDVI 值的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号