第一章:Python地理数据处理环境搭建

做风电项目,第一步就是搭环境。这事儿看着简单,但我在项目里见过太多人卡在这一步。有的装完GDAL发现读不了tif,有的Shapely和Fiona版本冲突,一跑就报错。嗯,今天咱们就把这事彻底理清楚。

1.1 为什么需要这些库?

说白了,风电场地形图处理离不开地理数据。你想想看,一个风电场少说几十平方公里,地形数据、风机点位、道路规划,全是带坐标的空间信息。Python自带的库根本处理不了这些。

我个人的经验是,这五个库各司其职:

  • GDAL:地理数据读写的瑞士军刀。栅格、矢量都能处理
  • Rasterio:专门处理栅格数据,比GDAL的Python接口好用太多
  • Shapely:做几何运算的,比如判断风机点位是否在禁建区
  • Fiona:读写矢量数据,配合Shapely用起来很顺手
  • Pyproj:坐标转换神器。不同坐标系之间的转换全靠它

核心逻辑图:这五个库的关系就像一套工具箱。GDAL是底座,Rasterio和Fiona是操作手柄,Shapely做精细活,Pyproj负责校准。

Python地理数据处理库架构 GDAL(数据读写底座) Rasterio(栅格处理) Fiona(矢量读写) Shapely(几何运算) Pyproj(坐标转换) 箭头表示依赖关系:上层依赖下层

1.2 安装前的准备工作

我建议你先检查一下Python版本。为什么?因为有些库对Python版本有要求。比如GDAL的某些版本就不支持Python 3.12。我个人习惯用Python 3.9或3.10,兼容性最好。

小技巧:用虚拟环境!我每次做新项目都会建一个独立的虚拟环境。这样不同项目的依赖不会打架。用conda或者venv都行,看个人习惯。

# 检查Python版本
python --version

# 创建虚拟环境(推荐)
python -m venv wind_env
# Windows激活
wind_env\Scripts\activate
# Linux/Mac激活
source wind_env/bin/activate

1.3 核心库安装实战

好,现在开始装库。这里有个坑——千万别直接pip install gdal。我曾经这么干过,结果编译了半小时还报错。正确的做法是用预编译的wheel包。

方法一:pip安装(推荐)

# 先装基础库
pip install numpy

# 再装地理库
pip install gdal
pip install rasterio
pip install shapely
pip install fiona
pip install pyproj

注意:如果pip install gdal报错,别硬扛。去https://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载对应的whl文件。我遇到过好几次,下载whl文件后直接pip install就搞定了。

方法二:conda安装(省心)

如果你用Anaconda,那简单多了。conda会自动处理依赖关系。

conda install -c conda-forge gdal
conda install -c conda-forge rasterio
conda install -c conda-forge shapely
conda install -c conda-forge fiona
conda install -c conda-forge pyproj

1.4 验证安装是否成功

装完了别急着走。咱们得验证一下。我一般写个简单的测试脚本:

import gdal
import rasterio
import shapely
import fiona
import pyproj

print("GDAL版本:", gdal.__version__)
print("Rasterio版本:", rasterio.__version__)
print("Shapely版本:", shapely.__version__)
print("Fiona版本:", fiona.__version__)
print("Pyproj版本:", pyproj.__version__)

print("\n所有库安装成功!")

如果都能打印出版本号,恭喜你,环境搭好了。如果哪个报错,别慌。看看报错信息,多半是依赖没装全。

常见问题速查表:

错误信息 可能原因 解决方案
ImportError: No module named 'gdal' GDAL没装好 用conda-forge重装
OSError: .../gdal.dll not found 系统缺少GDAL运行时 安装GDAL完整版或添加环境变量
RuntimeError: module compiled against API version ... 版本不匹配 统一用conda-forge安装所有库

1.5 我的避坑经验

做了这么多年风电项目,我总结了几条经验:

  • 版本要统一:别混着用pip和conda。我建议全用conda-forge,省心。
  • 先装GDAL:其他库都依赖GDAL。GDAL装好了,其他的基本没问题。
  • Windows用户注意:GDAL在Windows上容易出问题。我建议用conda或者直接下载OSGeo4W安装包。
  • 别用最新版:最新版不一定最稳定。我一般用次新版,bug少。

终极方案:如果实在搞不定,直接用Docker。拉一个geospatial镜像,啥都配好了。我团队现在新人都用这个方案,半小时就能上手干活。

1.6 快速测试:读取一个DEM文件

环境搭好了,咱们来个小测试。读取一个DEM文件看看:

import rasterio

# 打开DEM文件
with rasterio.open('dem.tif') as src:
    print("坐标系:", src.crs)
    print("范围:", src.bounds)
    print("分辨率:", src.res)
    print("波段数:", src.count)
    
    # 读取数据
    dem_data = src.read(1)
    print("数据形状:", dem_data.shape)
    print("高程范围:", dem_data.min(), "-", dem_data.max())

能跑通的话,说明你的环境完全OK了。接下来就可以开始处理风电场地形图了。

嗯,环境搭建就讲这么多。记住,这一步虽然基础,但很重要。我见过太多项目因为环境问题耽误好几天。花半小时把环境搭好,后面能省下大把时间。

专注资料整理