2、Python与遥感数据处理环境搭建

说实话,每次带新人入门遥感数据处理,我最怕的就是环境搭建这一步。明明代码逻辑都懂,结果卡在装库上,一卡就是半天。我自己当年也踩过不少坑,所以这一章咱们就把环境捋顺了,后面才能跑得痛快。

2.1 为什么选Python做遥感?

你可能会问:遥感数据处理不是有ENVI、ERDAS这些专业软件吗?干嘛非得用Python?

我的回答很简单:批量处理。你想想看,当你手上有100景Landsat影像,要逐景计算NDVI、做大气校正、拼接裁剪——用鼠标点100次?我反正受不了。Python脚本一跑,喝杯咖啡的功夫就完事了。

而且Python在生态评估领域有个天然优势:生态圈完整。从数据读取(GDAL/Rasterio)到科学计算(NumPy/SciPy)再到可视化(Matplotlib),一条龙搞定。我在做植被覆盖度评估项目时,经常是Rasterio读数据→NumPy做运算→Matplotlib出图,三个库无缝衔接。

2.2 Anaconda:一站式环境管理

我个人习惯用Anaconda来管理Python环境。为什么?因为它把Python解释器、包管理器(conda)、常用科学计算库打包在一起了。你不需要一个个去pip install,省心很多。

安装步骤:

  1. 去Anaconda官网下载对应系统的安装包(Windows/Mac/Linux)
  2. 双击安装,一路默认就行。但注意:安装路径不要有中文和空格。我曾经因为装在"Program Files (x86)"下,后面GDAL死活装不上,折腾了两小时才发现是路径问题。
  3. 安装完成后,打开终端(Windows下是Anaconda Prompt),输入conda --version,看到版本号就说明装好了。
小技巧:建议创建一个独立的遥感环境,别把库都装在base环境里。命令:conda create -n geo python=3.9。这样就算环境搞崩了,删掉重来也不影响其他项目。

2.3 核心库安装与配置

接下来是重头戏——装库。我按使用频率排序,一个个说。

2.3.1 GDAL:遥感数据的瑞士军刀

GDAL(Geospatial Data Abstraction Library)是遥感数据读取的底层库。几乎所有遥感格式(GeoTIFF、HDF、NetCDF等)都靠它解析。安装GDAL曾经是很多人的噩梦,因为用pip直接装经常报错。

推荐安装方式:

conda activate geo
conda install gdal

用conda装GDAL,它会自动处理依赖关系。我曾经试过用pip装,结果报了一堆dll缺失的错误,后来发现是C++运行时库版本不对。用conda就没这烦恼了。

2.3.2 Rasterio:更Pythonic的遥感库

Rasterio是在GDAL基础上封装的,接口更友好。说白了,GDAL像C语言风格,Rasterio更像Python风格。我个人更喜欢Rasterio,因为它读写数据时自动处理了地理坐标信息,代码写起来很简洁。

conda install rasterio

装完后可以测试一下:

import rasterio
print(rasterio.__version__)

2.3.3 NumPy:科学计算的基础

NumPy是Python科学计算的基石。遥感影像本质上就是多维数组(行×列×波段),NumPy正好处理这个。Anaconda默认装了NumPy,但建议更新到最新版:

conda install numpy

2.3.4 Matplotlib:出图必备

做生态评估,不出图怎么行?Matplotlib是Python最经典的可视化库。我习惯用它来快速查看影像效果、绘制植被指数直方图等。

conda install matplotlib
避坑指南:我曾经在Jupyter Notebook里用Matplotlib出图,结果图片显示不出来。后来发现是没加一行魔法命令:%matplotlib inline。加上就好了。

2.4 Jupyter Notebook:交互式编程利器

Jupyter Notebook是我做遥感数据分析时最常用的工具。它把代码、运行结果、图表、文字说明整合在一个文档里,特别适合做探索性分析。

安装很简单:

conda install jupyter

启动方式:在终端输入jupyter notebook,浏览器会自动打开一个页面。然后新建一个Python 3的Notebook,就可以开始写代码了。

嗯,这里要注意:Jupyter Notebook的单元格有两种模式——代码模式和Markdown模式。代码模式写Python代码,Markdown模式写说明文字。按Esc + M切换。

2.5 第一个遥感数据读取程序

环境搭好了,咱们来写第一个程序。我会用Rasterio读取一张GeoTIFF格式的遥感影像,并显示基本信息。

示例代码:

import rasterio
import matplotlib.pyplot as plt

# 读取影像
with rasterio.open('landsat8_sample.tif') as src:
    print("影像宽度(列数):", src.width)
    print("影像高度(行数):", src.height)
    print("波段数:", src.count)
    print("地理范围:", src.bounds)
    print("投影信息:", src.crs)
    
    # 读取第一个波段
    band1 = src.read(1)
    
    # 显示影像
    plt.figure(figsize=(8, 6))
    plt.imshow(band1, cmap='gray')
    plt.title('Landsat 8 Band 1 (Coastal)')
    plt.colorbar(label='DN值')
    plt.show()

这段代码做了三件事:

  1. rasterio.open()打开影像文件,with语句确保用完自动关闭
  2. 读取影像的元数据(宽、高、波段数、地理范围、投影)
  3. 读取第一个波段并用灰度图显示
注意:如果你手头没有测试影像,可以去USGS EarthExplorer下载一小块Landsat数据,或者用我提供的示例数据(课程配套资源包里有)。千万别用太大的影像测试,我第一次测试时用了整景Landsat影像,电脑直接卡死...

2.6 本章知识体系

为了让你更直观地理解本章内容,我画了一张流程图:

遥感数据处理环境搭建知识体系 Anaconda 环境管理 核心库安装与配置 GDAL Rasterio NumPy Matplotlib Jupyter Notebook 交互式编程 第一个遥感数据读取程序

这张图把本章的知识结构串起来了:从Anaconda环境管理出发,安装四个核心库,然后在Jupyter Notebook中编写第一个遥感数据读取程序。每一步都是下一环的基础,缺一不可。

2.7 环境验证清单

最后,我整理了一个验证清单。你按顺序检查一遍,确保环境没问题:

步骤 命令/操作 预期结果
1 conda --version 显示conda版本号
2 python --version 显示Python 3.9.x
3 import gdalfrom osgeo import gdal 无报错
4 import rasterio 无报错
5 import numpy as np 无报错
6 import matplotlib.pyplot as plt 无报错
7 运行2.5节的示例代码 显示影像信息并弹出灰度图

如果哪一步卡住了,别急。我建议你先检查环境是否激活(conda activate geo),再检查库是否装对版本。实在不行,删掉环境重建一个——反正代码没几行,重来也快。

好了,环境搭好了,后面咱们就可以专心搞植被指数计算了。记住:环境搭建是磨刀不误砍柴工,这一步稳了,后面就顺了。


公众号:蓝海资料掘金营,微信deep3321