Linux 下安装 Basemap
Basemap 是 Python 可视化库 Matplotlib 下的一个工具包,主要功能是绘制二维地图,对于空间数据的可视化非常重要。虽然现在 Python 很多常用的包都已经囊括在 Anaconda 中了,即便没有,也可以使用 PIP 命令直接快速安装,然而 Basemap 却是例外,它既不在 Anaconda 中,也无法用 PIP 直接安装,因此只能手动安装 Basemap 了。
本文介绍的是在 Linux 环境下 Basemap 的安装,比官方文档更详细一点,可见>> 官方安装介绍。
首先下载 basemap 的软件包,>> 这里可以找到最新版本的源码。
我这里直接右键复制了源码 tar 包的地址,准备使用 wget
命令直接下载,当然也可以点击链接下载相应的包然后上传至 Linux 中。
1)下载安装包并解压
1 2 | wget https://github.com/matplotlib/basemap/archive/v1.1.0.tar.gz tar -zxvf v1.1.0.tar.gz |
2)安装依赖库
1 2 | cd basemap-1.1.0/ pip install -r requirements.txt |
依赖环境说明文件 requirements.txt
的内容是 pyproj>=1.9.3
和 pyshp>=1.2.0
,因为我们使用的是 Anaconda 的 Python,仅需要这两个依赖库,如果是用系统自带的 Python 安装 Basemap,则还需要安装 matplotlib
和 numpy
这两个基础库。
3)编译安装 GEOS 库
1 2 3 4 | cd geos-3.3.3 export GEOS_DIR=/usr/local ./configure --prefix=$GEOS_DIR make; make install |
GEOS 是一个开源的计算处理几何图形空间关系的库,几乎是大多数地理信息、空间分析相关库的底层依赖,在 basemap 安装包里,已经包含了 GEOS 库的源码包,不需要再另行下载。安装 GEOS 库需要进行编译安装,进入 GEOS 的源码目录后,然后用 export
命令设置一个环境变量,声明 GEOS 库的安装路径,这里我们使用的安装目录是/usr/local
,当然也可以指定其他位置。接下来编译安装即可,--prefix
用于指定 GEOS 库的安装路径。
4)安装 basemap
1 2 | cd .. python setup.py install |
返回 basemap-1.1.0 目录,使用 setup.py
文件进行安装。
5)测试
1 2 | cd examples/ python simpletest.py |
basemap 的安装包里提供了很多示例代码,这里我们试运行 simpletest.py
代码文件,若在终端可输出下面的图,则证明安装成功。
© 本文链接:https://lumingdong.cn/install-basemap-under-linux.html
博主您好,我 basemap 下载速度一直很慢,下载下来之后会有解压报错的情况,博主能发一份 basemap 的.tar.gz 文件给我吗?我的邮箱是 2245744550@qq.com,实在搞不定了因此给您留言。
已经发你邮箱,现在 GitHub 网速确实不太好,帮你下载的时候也费了些周折。
AttributeError: ‘module’ object has no attribute ‘pyproj_datadir’ 请问出现这个问题怎么解决?
应该是特定版本不兼容的问题,“With transition to PROJ 6 pyproj was updated to 2.x which no longer provides the pyproj_datadir attribute”,你检查一下各个依赖包的版本对不对,如果对版本要求不高,尽量使用指定版本的包,符合版本要求且尽量接近,不要用太新的版本。
博主您好,我 basemap 下载速度一直很慢,下载下来之后会有解压报错的情况,博主能发一份 basemap 的.tar.gz 文件给我吗?我的邮箱是 1424616335@qq.com,实在搞不定了因此给您留言。
已发。
楼主您好,我在下载中也遇到了问题。希望您也能发我邮箱一份。
十分感谢啦!
978262300@qq.com
已发送,
这么多人下载困难啊,我完了上传到网盘上吧,文章内加下载链接。
博主您好,我下载的 basemap 包很慢,能否发到邮箱中 346410894@qq.com,谢谢您
已发。
你好!我费了 4 天功夫,install base 后发现,缺少 pyproj.pY 和 Shapefile.py. 我认为这两个工具应该不是编译产生的,是我下载的包里没有他们。能否把你拥有的这两个文件发我邮箱。谢谢🙏
抱歉,才看到,正常完整下载的安装包不会缺少某个 py 文件的,按你说的,可能是没有先安装 pyproj,pyshp 这两个库,你试试按照文中的步骤安装一下依赖库 pip install -r requirements.txt
../../../include/geos/platform.h:110:2: error: #error “Can not compile without isnan function or macro”
#error “Can not compile without isnan function or macro”
^
In file included from ../../../include/geos/geom/Coordinate.h:161:0,
from ../../../include/geos/geom/Envelope.h:26,
from ../../../include/geos/geom/Geometry.h:28,
from IndexedPointInAreaLocator.cpp:18:
../../../include/geos/geom/Coordinate.inl: In member function ‘bool geos::geom::Coordinate::isNull() const’:
../../../include/geos/geom/Coordinate.inl:39:17: error: ‘ISNAN’ was not declared in this scope
return (ISNAN(x) && ISNAN(y) && ISNAN(z));
^
../../../include/geos/geom/Coordinate.inl: In member function ‘bool geos::geom::Coordinate::equals3D(const geos::geom::Coordinate&) const’:
../../../include/geos/geom/Coordinate.inl:83:28: error: ‘ISNAN’ was not declared in this scope
您好,我编译 geos 的时候报这个错误,还麻烦指导一下这是什么错误呢?
这个问题我解决了,解决方法如下:
如果报缺少 error “Can not compile without isnan function or macro”,则编辑下面这个文件,修改第 24 行
# vim /home/basemap-1.1.0/geos-3.3.3/include/geos/platform.h
改:/* #undef HAVE_ISNAN */
为:#define HAVE_ISNAN 1
重新编译
但是我又遇到如下问题了:
libtool: link: unsupported hardcode properties
libtool: link: See the libtool documentation for more information.
libtool: link: Fatal configuration error.
make[1]: *** [libgeos_c.la] 错误 1
make[1]: 离开目录 “/home/basemap-1.1.0/geos-3.3.3/capi”
make: *** [all-recursive] 错误 1
目前还没有解决
抱歉,从上面的信息我也看不出是什么问题,编译还是很麻烦的,环境非常重要,建议重新梳理一下编译环境,检查基本依赖,再多 Google 一下。
博主您好, 我下载的 basemap 包不完整,请发一份 basemap 包给我, 谢谢您。
已发送。
谢谢
为什么我安装完成后,不能用那
root@docker-desktop:~# pip list
Package Version
————— ———–
basemap 1.2.1
cycler 0.10.0
kiwisolver 1.2.0
matplotlib 3.2.1
numpy 1.18.4
pip 20.0.2
pyparsing 2.4.7
pyproj 2.6.1.post1
pyshp 2.1.0
python-dateutil 2.8.1
setuptools 46.1.3
six 1.14.0
wheel 0.34.2
WARNING: You are using pip version 20.0.2; however, version 20.1 is available.
You should consider upgrading via the ‘/usr/local/bin/python -m pip install –upgrade pip’ command.
root@docker-desktop:~# python
Python 3.7.7 (default, Apr 23 2020, 14:43:26)
[GCC 8.3.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>> from mpl_toolkits.basemap import Basemap
Traceback (most recent call last):
File “”, line 1, in
ModuleNotFoundError: No module named ‘mpl_toolkits.basemap’
>>>
嗯,是很奇怪,不知道解决没?你可以用 which 命令查查 pip 是不是当前这个 Python 下的,别安装到不同 Python 版本中,话说我给你的不是 basemap-1.1.0 吗?你安装的这个是 1.2.1。。。。
一样的情况,我不同地方安装了俩次,我发现 git 地址上有 1。2 的所以又试过一次,然后我把/usr/local/lib/python3.7/site-packages/basemap-1.2.1-py3.7-linux-x86_64.egg/mpl_toolkits/basemap 这个目录复制到 /usr/local/lib/python3.7/site-packages/mpl_toolkits/basemap 这里了,就可以引用了,然后我测试又出现
>>> from mpl_toolkits.basemap import Basemap
Traceback (most recent call last):
File “”, line 1, in
File “/usr/local/lib/python3.7/site-packages/mpl_toolkits/basemap/__init__.py”, line 53, in
import _geoslib
ImportError: libgeos-3.3.3.so: cannot open shared object file: No such file or directory
>>>
这种情况还真没碰到过,正常情况安装过程没报错并提示成功的话应该就可以导入了。不过确实有见过依赖库编译安装不正确,即便显示成功安装了,也会在导入的时候报错。目前来看没有好的办法,只有多试,你也可以试试降低 matplotlib 版本。
pip 和 python 版本对应的
root@docker-desktop:~# pip -V
pip 20.0.2 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
root@docker-desktop:~# python
Python 3.7.7 (default, Apr 23 2020, 14:43:26)
[GCC 8.3.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>> from mpl_toolkits.basemap import Basemap
Traceback (most recent call last):
File “”, line 1, in
File “/usr/local/lib/python3.7/site-packages/mpl_toolkits/basemap/__init__.py”, line 53, in
import _geoslib
ImportError: libgeos-3.3.3.so: cannot open shared object file: No such file or directory
>>>
博主您好,我 basemap 下载速度一直很慢,下载下来之后会有解压报错的情况,博主能发一份 basemap 的.tar.gz 文件给我吗?我的邮箱是 2374995463@qq.com,实在搞不定了因此给您留言。
已发送~