作为一个测绘GIS专业的学生,会有很多绘制地图的需求,一般情况使用ArcGIS、QGIS就可以解决,但是在绘制如论文插图时需要使用更加专业可定制化程度更高的工具,专业传统一般使用GMT,几经比较,最终选择学习basemap,所以有了一下这篇博文。

basemap与其他工具比较

工具简介

  1. Basemap: Basemap是 Python 可视化库 Matplotlib 下的一个工具包,主要功能是绘制二维地图,是Python空间数据可视化的重要手段。
  2. GMT:即Generic Mapping Tools,是地球科学最广泛使用的制图软件之一。目前GMT主要有三大版本:GMT4、GMT5和GMT6,GMT4已不再更新维护;GMT5已进入维护期,不再增加新功能,仅修复已知BUG;GMT6是GMT目前的最新版本,也是开发者在着重维护和更新的版本。GMT6几乎完全兼容GMT5的语法,且提供了一种更为简洁易用的新写法。除此之外,GMT 还为其他常用的编程语言提供了方便的接口,如gmtmex(matlab 接口)、GMT.jl(Julia接口)、pygmt(Python接口)。
  3. Matlab:Matlab是一个强大的数学软件,可以用于数据分析、图像处理、模拟仿真等各种领域,是工科非常常用的软件。
  4. 其他:如Grads、NCL(NCAR Command Language)等,更多用于气象界,没研究不了解。

basemap与其他软件比较

优势

  1. Python语法更加简介易懂,容易上手。比较起来,GMT语法跟鬼一样……
  2. 安装简单,占用空间小,启动迅速。Matlab我电脑没两分钟启动不起来……
  3. 可以和Python的各种库,如matplotlib、geopandas、shapely、arcpy等协同使用,一站式解决数据处理、绘图等问题
  4. Python使用人数多,社区活跃,遇到问题更好解决

劣势

  1. Matlab是工科编程最常使用的工具,大量的算法都能直接找到Matlab源代码,与此相比,Python还需更多积累
  2. GMT是地球科学最常使用的绘图软件,绘制出的图形能比较容易满足期刊的要求。

basemap安装

由于basemap既不在conda中,也无法使用pip直接安装,所以安装较为复杂。我的环境是Windows7+Python3.8.3+Anaconda3_4.8.3,以下安装仅适用于我的环境。此外,因为我的电脑上同时装有Python2与Python3,因此,pip命令使用pip3,以防止混淆。

  1. 安装geos模块,直接使用pip安装即可

    pip3 install geos
  2. 安装pyproj模块,直接使用pip安装即可

    pip3 install pyproj
  3. 官网中下载对应版本的basemap .whl安装文件,我下载的版本为"basemap‑1.2.2‑cp38‑cp38‑win_amd64.whl",如下图

  4. 使用下载好的whl文件安装basemap。在命令行中cd至安装文件所在目录安装即可。

    pip3 install basemap‑1.2.2‑cp38‑cp38‑win_amd64.whl

至此,basemap则安装完成,测试一下是否正确安装

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
m = Basemap(projection='mill')
m.drawcoastlines()
plt.show()

显示如下图则表明basemap已正确安装,可以开始使用了。


本文参考博客 https://www.cnblogs.com/thisyan/p/9680095.htmlhttps://www.xuebuyuan.com/1597247.html

地图绘制之basemap第一弹 basemap选择与安装的更多相关文章

  1. Java基础-程序流程控制第一弹(分支结构/选择结构)

    Java基础-程序流程控制第一弹(分支结构/选择结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.if语句 1>.if语句的第一种格式 if(条件表达式){ 语句体: ...

  2. 利用Arcgis for javascript API绘制GeoJSON并同时弹出多个Popup

    1.引言 由于Arcgis for javascript API不可以绘制Geojson,并且提供的Popup一般只可以弹出一个,在很多专题图制作中,会遇到不少的麻烦.因此本文结合了两个现有的Arcg ...

  3. Matplotlib Toolkits:地图绘制工具

    Matplotlib Toolkits:地图绘制工具 有没有一种可以直接在详细地图(如谷歌地图)上绘制上百万坐标点的工具???谷歌地图坐标点多了也不能绘制了. Basemap (Not distrib ...

  4. arcgis api for javascript 学习(五) 实现地图绘制工具

    1.本文实现的功能为鼠标与地图之间的交互,能够在地图上绘制不同形状的图形 2.代码部分主要讲到的为Graphic函数的相关功能 <!DOCTYPE html> <html> & ...

  5. [deviceone开发]-底部弹出选择

    一.简介 个人上传的第一个示例源码,两天空闲时间写的,一点简单组件,写的挺乱还没啥注释,仅供新手学习. 底部弹出选择,可滑动选择选项,如果停留在选项中间,可自动校正位置,加了一点简单的动画效果,需要的 ...

  6. C#小程序飞行棋地图绘制

    1. 初始化地图,在绘制时可先将地图进行初始化,用数组来存储关卡的位置,然后利用循环给地图中 关卡所在处赋予代表关卡的值. 关键代码如下 /// <summary> /// 初始化游戏地图 ...

  7. iOS-Andriod百度地图仿百度外卖-饿了么-选择我的地址-POI检索/

    http://zanderzhang.gitcafe.io/2015/09/19/iOS-Andriod百度地图仿百度外卖-饿了么-选择我的地址-POI检索/ 百度外卖选择送货地址: 饿了么选择送货地 ...

  8. Hadoop基础-MapReduce的工作原理第一弹

    Hadoop基础-MapReduce的工作原理第一弹 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在本篇博客中,我们将深入学习Hadoop中的MapReduce工作机制,这些知识 ...

  9. codechef 营养题 第一弹

    第一弾が始まる! 定期更新しない! 来源:http://wenku.baidu.com/link?url=XOJLwfgMsZp_9nhAK15591XFRgZl7f7_x7wtZ5_3T2peHh5 ...

随机推荐

  1. Nginx 服务器配置支持SignalR (WebSocket)

    今天SignalR部署在测试环境服务器前端出现无法连接,前端报错如下: failed: Error during WebSocket handshake: Unexpected response co ...

  2. Python 简明教程 --- 25,Python 目录操作

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 做技术一定要一颗恒心,这样才不会半途而废. 目录 上一节我们介绍了文件相关的操作,本节我们来介绍目录 ...

  3. @Autowired还可以注入List和Map

    @LoadBalanced@Autowired(required = false)private List<RestTemplate> restTemplates = Collection ...

  4. 解惑,什么是data-attribute ?

    在接触 Web前端开发的一段时间,有时会去看Google或者百度的源代码,有某些地方定义了 data-key ,这种语法 但是如果你直接去 Google data-key 或 data-item 可能 ...

  5. JavaFX让UI更美观-CSS样式

    相对于Swing来说,JavaFX在UI上改善了很多,不仅可以通过FXML来排版布局界面,同时也可以通过CSS样式表来美化UI. 其实在开发JavaFX应用的时候,可以将FXML看做是HTML,这样跟 ...

  6. sscanf,sprintf(思修课的收获)

    转载的,就是做个笔记 sprintf函数原型为 int sprintf(char *str, const char *format, ...).作用是格式化字符串,具体功能如下所示: (1)将数字变量 ...

  7. JavaScript Symbol对象

    JavaScript Symbol对象 Symbol Symbol对象是es6中新引进的一种数据类型,它的作用非常简单,就是用于防止属性名冲突而产生. Symbol的最大特点就是值是具有唯一性,这代表 ...

  8. Python os.tcgetpgrp() 方法

    概述 os.tcgetpgrp() 方法用于回与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组.高佣联盟 www.cgewang.com 语法 tcgetpgrp()方法语法格 ...

  9. Python 字典(Dictionary) len()方法

    Python 字典(Dictionary) len()方法 描述 Python 字典(Dictionary) len() 函数计算字典元素个数,即键的总数.高佣联盟 www.cgewang.com 语 ...

  10. 4.9 省选模拟赛 划分序列 二分 结论 树状数组优化dp

    显然发现可以二分. 对于n<=100暴力dp f[i][j]表示前i个数分成j段对于当前的答案是否可行. 可以发现这个dp是可以被优化的 sum[i]-sum[j]<=mid sum[i] ...