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安裝。