1. 起因
由于最近在处理遥感影像、空间矢量数据需要自己写代码实现,就决定用Ananconda在windows10上配置一个地理科学计算的Python环境,在安装geopandas时遇到了一些问题。
什么是geopandas?
GeoPandas是一个开源项目,Pandas是Python的一个结构化数据分析的利器,GeoPandas扩展了pandas使用的数据类型,允许对几何类型进行空间操作,DataFrame相当于GIS数据中的一张属性表,使得可以直接操作矢量数据属性表,其目标是使得在python中操作地理数据更方便。 |
使用pip在Linux和Mac上安装geopandas可能很简单。然而由于它的几个依赖包都有C扩展,直接安装会导致在Windows上编译失败,最终安装失败。安装geopandas之前需要先安装依赖项 GDAL, Fiona , pyproj ,rtree和shapely。
2. 解决办法
环境:Windows 10 64位
可以使用conda安装(简单),也可以使用pip安装(麻烦些)
(1). 使用Anaconda(带有大量科学计算包的发行版Python)安装
这种方法比较简单,尤其是只想快速搭建环境的数据科学处理人员。切换到你的目标虚拟环境后,在命令行输入:
conda install -c conda-forge geopandas
-c conda-forge表示指定包下载渠道为conda-forge仓库,conda-forge是一个社区组织,维护了大量的由conda管理的开源软件集合,geopandas目前在官方conda仓库是没有的,conda-forge包相对较全也较新。
执行该命名后conda会自动从conda-forge下载安装geopandas所依赖的项,然后安装geopandas,一步到位。
这种方法可能会失败,我这里就失败了,看起来所有安装都成功了,但是调用geopandas时输入
import geopandas
却报错:ImportError: DLL load failed: 找不到指定的模块.
可是明明提示安装成功了啊,通过conda list可以查看到安装列表。
再输入:
import sys
'geopandas' in sys.modules
返回False,说明表面上看起来安装完成了,实际上geopandas是没有安装成功的。
通过分析发现:直接从conda-forge安装的Fiona是有问题的,虽然安装成功了,但是import 却提示失败,说明不能用。于是我就从 Gohlke(Python非官方的Windows二进制扩展包)下载Fiona,输入:
pip install + 文件全路径名
安装成功了,此时再测试geopandas是可用的,说明问题解决了。可以看出从conda-forge直接安装的Fiona在我这里是不能用的。
(2). 手动pip安装
这种方法较第一种方法来说麻烦一些,需要手动下载、安装多个包。
- 卸载已经存在的依赖包:首先也是最重要的一点,不要直接使用pip或conda安装,通常会出现一些模糊的或莫名其妙的错误,使故障分析变得困难。如果OSGeo4W、GDAL、Fiona、pyproj、rtree或shapely已经安装,卸载它。后面下载的GDAL wheel文件已经包含一个完整的GDAL—不需要将它与OSGeo4W一起使用。
- 下载依赖包: GDAL, Fiona , pyproj ,rtree、shapely,选择对应你的Python版本的项。
- 安装下载的依赖项:使用pip命令安装,先安装GDAL,安装方式如 pip install GDAL‑2.3.3‑cp36‑cp36m‑win_amd64.whl 然后安装其他几个依赖项,如果安装过程中报错,有提示缺少VC++ redistributable,则下载对应的VC++分发包安装,再继续安装。
- 安装geopandas:直接输入命令:
pip install geopandas
即可完成geopandas安装。