地图绘制之basemap第一弹 basemap选择与安装
作为一个测绘GIS专业的学生,会有很多绘制地图的需求,一般情况使用ArcGIS、QGIS就可以解决,但是在绘制如论文插图时需要使用更加专业可定制化程度更高的工具,专业传统一般使用GMT,几经比较,最终选择学习basemap,所以有了一下这篇博文。
basemap与其他工具比较
工具简介
- Basemap: Basemap是 Python 可视化库 Matplotlib 下的一个工具包,主要功能是绘制二维地图,是Python空间数据可视化的重要手段。
- GMT:即Generic Mapping Tools,是地球科学最广泛使用的制图软件之一。目前GMT主要有三大版本:GMT4、GMT5和GMT6,GMT4已不再更新维护;GMT5已进入维护期,不再增加新功能,仅修复已知BUG;GMT6是GMT目前的最新版本,也是开发者在着重维护和更新的版本。GMT6几乎完全兼容GMT5的语法,且提供了一种更为简洁易用的新写法。除此之外,GMT 还为其他常用的编程语言提供了方便的接口,如gmtmex(matlab 接口)、GMT.jl(Julia接口)、pygmt(Python接口)。
- Matlab:Matlab是一个强大的数学软件,可以用于数据分析、图像处理、模拟仿真等各种领域,是工科非常常用的软件。
- 其他:如Grads、NCL(NCAR Command Language)等,更多用于气象界,没研究不了解。
basemap与其他软件比较
优势
- Python语法更加简介易懂,容易上手。比较起来,GMT语法跟鬼一样……
- 安装简单,占用空间小,启动迅速。Matlab我电脑没两分钟启动不起来……
- 可以和Python的各种库,如matplotlib、geopandas、shapely、arcpy等协同使用,一站式解决数据处理、绘图等问题
- Python使用人数多,社区活跃,遇到问题更好解决
劣势
- Matlab是工科编程最常使用的工具,大量的算法都能直接找到Matlab源代码,与此相比,Python还需更多积累
- GMT是地球科学最常使用的绘图软件,绘制出的图形能比较容易满足期刊的要求。
basemap安装
由于basemap既不在conda中,也无法使用pip直接安装,所以安装较为复杂。我的环境是Windows7+Python3.8.3+Anaconda3_4.8.3,以下安装仅适用于我的环境。此外,因为我的电脑上同时装有Python2与Python3,因此,pip命令使用pip3,以防止混淆。
- 安装geos模块,直接使用pip安装即可
pip3 install geos - 安装pyproj模块,直接使用pip安装即可
pip3 install pyproj - 从官网中下载对应版本的basemap .whl安装文件,我下载的版本为"basemap‑1.2.2‑cp38‑cp38‑win_amd64.whl",如下图

- 使用下载好的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.html 和 https://www.xuebuyuan.com/1597247.html
地图绘制之basemap第一弹 basemap选择与安装的更多相关文章
- Java基础-程序流程控制第一弹(分支结构/选择结构)
Java基础-程序流程控制第一弹(分支结构/选择结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.if语句 1>.if语句的第一种格式 if(条件表达式){ 语句体: ...
- 利用Arcgis for javascript API绘制GeoJSON并同时弹出多个Popup
1.引言 由于Arcgis for javascript API不可以绘制Geojson,并且提供的Popup一般只可以弹出一个,在很多专题图制作中,会遇到不少的麻烦.因此本文结合了两个现有的Arcg ...
- Matplotlib Toolkits:地图绘制工具
Matplotlib Toolkits:地图绘制工具 有没有一种可以直接在详细地图(如谷歌地图)上绘制上百万坐标点的工具???谷歌地图坐标点多了也不能绘制了. Basemap (Not distrib ...
- arcgis api for javascript 学习(五) 实现地图绘制工具
1.本文实现的功能为鼠标与地图之间的交互,能够在地图上绘制不同形状的图形 2.代码部分主要讲到的为Graphic函数的相关功能 <!DOCTYPE html> <html> & ...
- [deviceone开发]-底部弹出选择
一.简介 个人上传的第一个示例源码,两天空闲时间写的,一点简单组件,写的挺乱还没啥注释,仅供新手学习. 底部弹出选择,可滑动选择选项,如果停留在选项中间,可自动校正位置,加了一点简单的动画效果,需要的 ...
- C#小程序飞行棋地图绘制
1. 初始化地图,在绘制时可先将地图进行初始化,用数组来存储关卡的位置,然后利用循环给地图中 关卡所在处赋予代表关卡的值. 关键代码如下 /// <summary> /// 初始化游戏地图 ...
- iOS-Andriod百度地图仿百度外卖-饿了么-选择我的地址-POI检索/
http://zanderzhang.gitcafe.io/2015/09/19/iOS-Andriod百度地图仿百度外卖-饿了么-选择我的地址-POI检索/ 百度外卖选择送货地址: 饿了么选择送货地 ...
- Hadoop基础-MapReduce的工作原理第一弹
Hadoop基础-MapReduce的工作原理第一弹 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在本篇博客中,我们将深入学习Hadoop中的MapReduce工作机制,这些知识 ...
- codechef 营养题 第一弹
第一弾が始まる! 定期更新しない! 来源:http://wenku.baidu.com/link?url=XOJLwfgMsZp_9nhAK15591XFRgZl7f7_x7wtZ5_3T2peHh5 ...
随机推荐
- 【转载】基于dom的一些前端漏洞
最直接的xss --dom xss function trackSearch(query) { document.write('<img src="/resources/images/ ...
- 数据页结构 .InnoDb行格式、以及索引底层原理分析
局部性原理 局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中. 首先要明白局部性原理能解决的是什么问题,也就是主存容量远远比缓存大, CP ...
- webserver 返回json 如何去掉 <string xmlns="http://tempuri.org/">
[WebMethod] public void GetJson(String sJson) { Context.Response.Charset = "UTF-8"; / ...
- Linux阶段总结
Linux总结 一.学习心得: 在学习本阶段关于Linux阶段的课程时,让我对Linux有了一个大概的了解. 我了解到Linux操作系统是基于最初的Unix系统而开发出来的: 在学习Linux的时候, ...
- 呕心搜集总结的15个“swoole”常见问题(一)
一.升级Swoole版本 可以使用 pecl 进行安装和升级 pecl upgrade swoole 也可以直接从 github/gitee/pecl 下载一个新版本,重新安装编译. 更新 Swool ...
- The Google File System(论文阅读笔记)
概述 GFS:一个可扩展的分布式文件系统,用于大型分布式数据相关应用,TB级的数据,成千上万的并发请求. 设计概览 假设 组件的失效比异常更加常见 多数的文件修改操作是追加数据而不是重写原来的数据 ...
- PHP array_pad() 函数
实例 返回 5 个元素,并将 "blue" 值插入到数组的新元素中: <?php$a=array("red","green");pri ...
- Python File next() 方法
概述 next() 方法在文件使用迭代器时会使用到,在循环中,next()方法会在每次循环中调用,该方法返回文件的下一行,如果到达结尾(EOF),则触发 StopIteration高佣联盟 www.c ...
- PHP floatval()、doubleval () 函数
floatval 函数用于获取变量的浮点值. floatval 不能用于数组或对象.高佣联盟 www.cgewang.com 版本要求:PHP 4 >= 4.2.0, PHP 5, PHP 7. ...
- Android中的LruCache的原理和使用
Android中的LruCache的原理和使用 LruCache,虽然很多文章都把LRU翻译成"最近最少使用"缓存策略,但Android中的LruCache真的如此吗? 答案是No ...