第一章:Python地理数据处理环境搭建
做风电项目,第一步就是搭环境。这事儿看着简单,但我在项目里见过太多人卡在这一步。有的装完GDAL发现读不了tif,有的Shapely和Fiona版本冲突,一跑就报错。嗯,今天咱们就把这事彻底理清楚。
1.1 为什么需要这些库?
说白了,风电场地形图处理离不开地理数据。你想想看,一个风电场少说几十平方公里,地形数据、风机点位、道路规划,全是带坐标的空间信息。Python自带的库根本处理不了这些。
我个人的经验是,这五个库各司其职:
- GDAL:地理数据读写的瑞士军刀。栅格、矢量都能处理
- Rasterio:专门处理栅格数据,比GDAL的Python接口好用太多
- Shapely:做几何运算的,比如判断风机点位是否在禁建区
- Fiona:读写矢量数据,配合Shapely用起来很顺手
- Pyproj:坐标转换神器。不同坐标系之间的转换全靠它
核心逻辑图:这五个库的关系就像一套工具箱。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了。接下来就可以开始处理风电场地形图了。
嗯,环境搭建就讲这么多。记住,这一步虽然基础,但很重要。我见过太多项目因为环境问题耽误好几天。花半小时把环境搭好,后面能省下大把时间。