利用python绘制中国地图(含省界、河流等)


Posted in Python onSeptember 21, 2020

我们可以使用Basemap这个工具包来实现中国地图的绘制

首先需要加载一些包:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

Basemap包就是气象画图的利器,现在我们就可以愉快的画图了!

plt.figure(1)
map=Basemap()
map.drawcoastlines()
plt.title(r'$World\ Map$',fontsize=24)
plt.show()

第2行创建一个地图,第3行添加海岸线,这样一个世界地图就出来了,怎么样,很简单吧。(plt.show()这行代码是用来显示图片的)

利用python绘制中国地图(含省界、河流等)

我们发现这只是海岸线图,那么怎么将国界线添加上去呢?很简单,只要添加一行代码就可以了。

map.drawcountries()

利用python绘制中国地图(含省界、河流等)

那么怎么添加河流呢?可能有些同学已经猜到了,就是drawrivers()

map.drawrivers(color='blue',linewidth=0.3)

利用python绘制中国地图(含省界、河流等)

好了,现在我们可以开始画中国地图了!
其实只要在创建地图时指定一下范围就可以了,查阅资料发现,中国的经纬度范围是东经135度2分30秒-东经73度40分,北纬3度52分-北纬53度33分。

map=Basemap(llcrnrlon=70,llcrnrlat=3,urcrnrlon=139,urcrnrlat=54)

利用python绘制中国地图(含省界、河流等)

好了,一个中国地图就出来了!但是我们发现,好像少了点什么,没错就是省界。我们可以在https://gadm.org/download_country_v3.html下载中国大陆和台湾省的行政区域的shape文件,下载后解压,然后加入下面的代码。

CHN='G:\python_material\MapOfChina'

CHN的值就是解压后的地图文件所在的地址。
下面我们就可以加入省界了!

map.readshapefile(CHN+'\gadm36_CHN_shp\gadm36_CHN_1',
         'states',drawbounds=True)

别忘了把台湾省加上去

map.readshapefile(CHN+'\gadm36_TWN_shp\gadm36_TWN_1',
         'taiwan',drawbounds=True)

利用python绘制中国地图(含省界、河流等)

还可以在地图上加上经纬度,比如我们要画5条经纬线,可以这么做:

parallels = np.linspace(3,55,5)
map.drawparallels(parallels,labels=[True,False,False,False])
meridians = np.linspace(70,140,5)
map.drawmeridians(meridians,labels=[False,False,False,True])

利用python绘制中国地图(含省界、河流等)

大功告成!但是,emmm,我们发现好像有点歪?我们可以在创建地图时选择投影参数。

map=Basemap(llcrnrlon=70,llcrnrlat=3,urcrnrlon=137,urcrnrlat=54,
      projection = 'lcc', lat_1 = 33, lat_2 = 45, lon_0 = 100)

利用python绘制中国地图(含省界、河流等)

这回正式的完成了!

附上所有代码:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

plt.figure(1)
map=Basemap(llcrnrlon=70,llcrnrlat=3,urcrnrlon=139,urcrnrlat=54,
      projection = 'lcc', lat_1 = 33, lat_2 = 45, lon_0 = 100)
map.drawcoastlines()
map.drawcountries()
map.drawrivers(color='blue',linewidth=0.3)
CHN='G:\python_material\MapOfChina'
map.readshapefile(CHN+'\gadm36_CHN_shp\gadm36_CHN_1',
         'states',drawbounds=True)
map.readshapefile(CHN+'\gadm36_TWN_shp\gadm36_TWN_1',
         'taiwan',drawbounds=True)
parallels = np.linspace(3,55,5)
map.drawparallels(parallels,labels=[True,False,False,False])
meridians = np.linspace(70,140,5)
map.drawmeridians(meridians,labels=[False,False,False,True])
plt.title(r'$China\ Map$',fontsize=24)

plt.show()

以上就是利用python绘制中国地图的详细内容,更多关于python 绘制地图的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python选择排序算法的实现代码
Nov 21 Python
在Python中使用next()方法操作文件的教程
May 24 Python
Python Json序列化与反序列化的示例
Jan 31 Python
神经网络相关之基础概念的讲解
Dec 29 Python
python numpy实现文件存取的示例代码
May 26 Python
pyqt5 键盘监听按下enter 就登陆的实例
Jun 25 Python
python内存监控工具memory_profiler和guppy的用法详解
Jul 29 Python
基于python实现简单C/S模式代码实例
Sep 14 Python
python requests库的使用
Jan 06 Python
python保存图片的四个常用方法
Feb 28 Python
Python必备技巧之字符数据操作详解
Mar 23 Python
python中validators库的使用方法详解
Sep 23 Python
python利用google翻译方法实例(翻译字幕文件)
Sep 21 #Python
python统计mysql数据量变化并调用接口告警的示例代码
Sep 21 #Python
python3.8动态人脸识别的实现示例
Sep 21 #Python
如何在Anaconda中打开python自带idle
Sep 21 #Python
Python 实现国产SM3加密算法的示例代码
Sep 21 #Python
python如何实现DES加密
Sep 21 #Python
如何从csv文件构建Tensorflow的数据集
Sep 21 #Python
You might like
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
php轻松实现文件上传功能
2016/03/03 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
基于jquery的一个浮动框(扩展性比较好 )
2010/08/27 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
javascript操作ul中li的方法
2015/05/14 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
javascript中Date对象的使用总结
2016/11/21 Javascript
JS实现的系统调色板完整实例
2016/12/21 Javascript
angular中实现控制器之间传递参数的方式
2017/04/24 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
解决vue中的无限循环问题
2020/07/27 Javascript
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
用pandas中的DataFrame时选取行或列的方法
2018/07/11 Python
python用插值法绘制平滑曲线
2021/02/19 Python
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
写给学生的新学期寄语
2014/01/18 职场文书
高中生物教学反思
2014/02/05 职场文书
电子信息工程专业推荐信
2014/02/14 职场文书
大学活动总结格式
2014/04/29 职场文书
建设投标担保书
2014/05/13 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
为什么在foreach循环中JAVA集合不能添加或删除元素
2021/06/11 Java/Android
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL
用JS创建一个录屏功能
2021/11/11 Javascript