Linux 下安装 Basemap

Basemap 是 Python 可视化库 Matplotlib 下的一个工具包,主要功能是绘制二维地图,对于空间数据的可视化非常重要。虽然现在 Python 很多常用的包都已经囊括在 Anaconda 中了,即便没有,也可以使用 PIP 命令直接快速安装,然而 Basemap 却是例外,它既不在 Anaconda 中,也无法用 PIP 直接安装,因此只能手动安装 Basemap 了。

本文介绍的是在 Linux 环境下 Basemap 的安装,比官方文档更详细一点,可见>> 官方安装介绍

首先下载 basemap 的软件包,>> 这里可以找到最新版本的源码。

我这里直接右键复制了源码 tar 包的地址,准备使用 wget 命令直接下载,当然也可以点击链接下载相应的包然后上传至 Linux 中。

1)下载安装包并解压

2)安装依赖库

依赖环境说明文件 requirements.txt 的内容是 pyproj>=1.9.3pyshp>=1.2.0,因为我们使用的是 Anaconda 的 Python,仅需要这两个依赖库,如果是用系统自带的 Python 安装 Basemap,则还需要安装 matplotlibnumpy 这两个基础库。

3)编译安装 GEOS 库

GEOS 是一个开源的计算处理几何图形空间关系的库,几乎是大多数地理信息、空间分析相关库的底层依赖,在 basemap 安装包里,已经包含了 GEOS 库的源码包,不需要再另行下载。安装 GEOS 库需要进行编译安装,进入 GEOS 的源码目录后,然后用 export 命令设置一个环境变量,声明 GEOS 库的安装路径,这里我们使用的安装目录是/usr/local,当然也可以指定其他位置。接下来编译安装即可,--prefix 用于指定 GEOS 库的安装路径。

4)安装 basemap

返回 basemap-1.1.0 目录,使用 setup.py 文件进行安装。

5)测试

basemap 的安装包里提供了很多示例代码,这里我们试运行 simpletest.py 代码文件,若在终端可输出下面的图,则证明安装成功。

© 除特别注明外,本站所有文章均为卢明冬的博客原创 , 转载请注明作者和文章链接。
© 本文链接:https://lumingdong.cn/install-basemap-under-linux.html
相关文章
评论 ( 23 )
  1. 1、、
    2020年2月5日 at 下午8:49
    回复

    博主您好,我 basemap 下载速度一直很慢,下载下来之后会有解压报错的情况,博主能发一份 basemap 的.tar.gz 文件给我吗?我的邮箱是 2245744550@qq.com,实在搞不定了因此给您留言。

    • 卢明冬
      卢明冬
      2020年2月5日 at 下午9:32
      回复

      已经发你邮箱,现在 GitHub 网速确实不太好,帮你下载的时候也费了些周折。

  2. CC
    2020年3月2日 at 上午11:49
    回复

    AttributeError: 'module' object has no attribute 'pyproj_datadir'请问出现这个问题怎么解决?

    • 卢明冬
      卢明冬
      2020年3月3日 at 上午9:56
      回复

      应该是特定版本不兼容的问题,“With transition to PROJ 6 pyproj was updated to 2.x which no longer provides the pyproj_datadir attribute”,你检查一下各个依赖包的版本对不对,如果对版本要求不高,尽量使用指定版本的包,符合版本要求且尽量接近,不要用太新的版本。

  3. 2``
    2020年3月2日 at 下午9:46
    回复

    博主您好,我 basemap 下载速度一直很慢,下载下来之后会有解压报错的情况,博主能发一份 basemap 的.tar.gz 文件给我吗?我的邮箱是 1424616335@qq.com,实在搞不定了因此给您留言。

    • 卢明冬
      卢明冬
      2020年3月3日 at 上午10:03
      回复

      已发。

      • Icyfrog
        2020年5月19日 at 下午11:17
        回复

        楼主您好,我在下载中也遇到了问题。希望您也能发我邮箱一份。
        十分感谢啦!
        978262300@qq.com

        • 卢明冬
          卢明冬
          2020年5月20日 at 上午9:28
          回复

          已发送, :emoji-3: 这么多人下载困难啊,我完了上传到网盘上吧,文章内加下载链接。

  4. 刘康文
    2020年3月17日 at 下午9:54
    回复

    博主您好,我下载的 basemap 包很慢,能否发到邮箱中 346410894@qq.com,谢谢您

    • 卢明冬
      卢明冬
      2020年3月20日 at 上午10:08
      回复

      已发。

  5. Yu
    2020年4月6日 at 上午7:58
    回复

    你好!我费了 4 天功夫,install base 后发现,缺少 pyproj.pY 和 Shapefile.py. 我认为这两个工具应该不是编译产生的,是我下载的包里没有他们。能否把你拥有的这两个文件发我邮箱。谢谢🙏

    • 卢明冬
      卢明冬
      2020年4月8日 at 下午2:25
      回复

      抱歉,才看到,正常完整下载的安装包不会缺少某个 py 文件的,按你说的,可能是没有先安装 pyproj,pyshp 这两个库,你试试按照文中的步骤安装一下依赖库 pip install -r requirements.txt

  6. 找我请用支付宝
    2020年5月9日 at 下午2:52
    回复

    ../../../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 的时候报这个错误,还麻烦指导一下这是什么错误呢?

    • 找我请用支付宝
      2020年5月9日 at 下午3:17
      回复

      这个问题我解决了,解决方法如下:
      如果报缺少 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
      目前还没有解决

      • 卢明冬
        卢明冬
        2020年5月9日 at 下午9:31
        回复

        抱歉,从上面的信息我也看不出是什么问题,编译还是很麻烦的,环境非常重要,建议重新梳理一下编译环境,检查基本依赖,再多 Google 一下。

  7. 嘻嘻
    2020年5月14日 at 下午3:34
    回复

    博主您好, 我下载的 basemap 包不完整,请发一份 basemap 包给我, 谢谢您。

    • 卢明冬
      卢明冬
      2020年5月14日 at 下午6:08
      回复

      已发送。

      • 嘻嘻
        2020年5月14日 at 下午8:10
        回复

        谢谢

  8. 嘻嘻
    2020年5月14日 at 下午10:33
    回复

    为什么我安装完成后,不能用那
    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'
    >>>

    • 卢明冬
      卢明冬
      2020年5月15日 at 上午11:33
      回复

      嗯,是很奇怪,不知道解决没?你可以用 which 命令查查 pip 是不是当前这个 Python 下的,别安装到不同 Python 版本中,话说我给你的不是 basemap-1.1.0 吗?你安装的这个是 1.2.1。。。。

      • 嘻嘻
        2020年5月15日 at 下午12:18
        回复

        一样的情况,我不同地方安装了俩次,我发现 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
        >>>

        • 卢明冬
          卢明冬
          2020年5月15日 at 下午9:42
          回复

          这种情况还真没碰到过,正常情况安装过程没报错并提示成功的话应该就可以导入了。不过确实有见过依赖库编译安装不正确,即便显示成功安装了,也会在导入的时候报错。目前来看没有好的办法,只有多试,你也可以试试降低 matplotlib 版本。

  9. 嘻嘻
    2020年5月15日 at 下午12:21
    回复

    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
    >>>

写下您的评论...