用rasterio处理卫星影像:从安装到NDVI计算的完整实战教程
当我们需要分析地球表面的植被覆盖、城市扩张或自然灾害影响时,卫星影像数据成为了不可或缺的资源。这些数据通常以多波段栅格格式存储,包含了从可见光到红外等各种波段的反射率信息。Python生态中的rasterio库,作为GDAL的Pythonic封装,为处理这类地理空间栅格数据提供了高效而优雅的解决方案。
本文将带您从零开始,逐步掌握使用rasterio处理卫星影像的核心技能。不同于简单的API介绍,我们会通过实际案例演示如何计算NDVI(归一化植被指数)——这个广泛应用于农业监测、森林管理和环境评估的重要指标。无论您是GIS开发者、遥感分析师,还是对地理空间数据感兴趣的Python程序员,都能从中获得可直接应用于项目的实用技巧。
1. 环境配置与rasterio安装
在开始处理卫星影像之前,我们需要确保Python环境已正确配置。rasterio作为地理空间分析栈的重要组成,其安装过程可能比常规Python库稍复杂,主要因为它依赖于GDAL库。
推荐使用conda管理环境,这能自动解决依赖关系:
conda create -n geo python=3.10
conda activate geo
conda install -c conda-forge rasterio numpy matplotlib
如果必须使用pip安装,需要先确保系统已安装GDAL开发库。在Ubuntu上可执行:
sudo apt-get install libgdal-dev
pip install rasterio --no-binary rasterio
验证安装是否成功:
import rasterio
print(rasterio.__version__) # 应输出如1.3.0等版本号
注意:Windows用户建议直接下载预编译的wheel文件,或使用conda-forge渠道安装以避免编译问题。
常见问题排查:
- 若遇到"Could not find libgdal"错误,检查GDAL是否已安装并确认环境变量设置正确
- 版本冲突时,可尝试固定依赖版本:
pip install "rasterio==1.3.0" "numpy<1.24"
2. 卫星影像数据获取与加载
实战中我们使用Landsat 8的公开数据作为示例。这些数据可从USGS EarthExplorer或AWS的Landsat公共数据集获取。为方便演示,这里使用预先裁剪好的示例数据:
import rasterio
from rasterio.plot import show
# 加载多波段卫星影像
image_path = 'LC08_L1TP_123032_20201014_20201014_01_RT.tif'
with rasterio.open(image_path) as src:
print(f"影像尺寸: {src.width}x{src.height}")
print(f"波段数量: {src.count}")
print(f"坐标参考系统(CRS): {src.crs}")
print(f"地理变换参数:\n{src.transform}")
show(src, title='原始卫星影像')
典型输出可能显示:
影像尺寸: 7851x7851
波段数量: 11
坐标参考系统(CRS): EPSG:32651
地理变换参数:
| 30.00, 0.00, 358485.00|
| 0.00,-30.00,


268

被折叠的 条评论
为什么被折叠?



