上期文章见:Python Cartopy地图投影【1】
上期文章内容纲要:

step1: 开始地图投影
step2: GeoAxes 的常用方法
2.1 add_feature:添加海岸线、河流、湖泊等地理特征
2.2 gridlines:添加网格线以及相应标签等

这期内容继续

2.3 set_extent:设置地理边界

这个方法是用于设置GeoAxes的范围(上下左右边界)。
语法格式:

axes.gridlines(extents, crs=None)

在这里
extents:范围,格式为(x0, x1, y0, y1) ,分别对应左右下上的经纬度边界
crs: 投影。若不设置则默认为ax1的投影
设置边界范围的图【代码见最后】

2.4 set_boundary:裁剪子图形状

语法格式:

axes.set_boundary(path, transform=None)

关于这个函数的使用,我们将在接下来的兰伯特投影和极地投影中举例介绍。

3 三种常见地图投影与实用技巧

我们针对不同的研究范围需要使用不同的地图投影,以保证关注范围的图形变形最小。比如我们关注北极地区,那我们则通常使用极地投影,比如我们关注全球范围,则我们更多使用最基础的等距投影。所以我们要掌握这些常见投用的使用方法来应对不同的情况。

3.1 等距网格投影 PlateCarree

语法:

cartopy.crs.PlateCarree(central_longitude=0.0)
  • central_longitude:中心经度。默认为 0°
    见下图,中心经度分别为0度(左)和180度(右)【代码见最后】

需要说明的是,如果我们同时使用了 set_extent 方法来规定地图的范围(左右边界),那么我们实际上无需通过 central_longitude 来设置中心经度,因为会自动计算左右边界的中心值。
当我们没有特殊需求时,我们一般都是用这个投影方式来进行绘制的。

3.2 兰伯特投影 LambertConformal

兰伯特投影一般用于展示中高纬度区域的图形,因为中高纬度区域在这种投影下变形较小。
语法:

cartopy.crs.LambertConformal(central_longitude=- 96.0, central_latitude=39.0, cutoff=- 30)
  • central_longitude,central_latitude:投影中心的经度和纬度,默认分别为 96°W 和 39°N
  • cutoff:最南的纬度,默认为 30°S

这张图其实也是360度,
这时候设置边界不能用set_extent 函数,可用set_boundary,上图提到

3.3 NorthPolarStereo (北)极地投影

如果我们需要关注整个经度范围的高纬度区域时,我们会选择极地投影,特别是研究海冰,南北极气候的读者会非常频繁地运用到这个投影。这里我们以北极极地投影为例,若需调整为南极极地投影,只需将 North 关键字替换为 South。

语法:

cartopy.crs.NorthPolarStereo(central_longitude=0.0)

此时圆了【代码见最后】

代码

2.3

# 绘制东北半球地图
# 导入库
import matplotlib.pyplot as plt  # 调用matplotlib.pyplot模块,用于调用基础绘图函数
import cartopy.crs as ccrs  # 调用cartopy.crs模块,用于创建投影
import cartopy.feature as cfeature  # 调用cartopy.feature模块,引入默认地理信息
# 创建图形
fig = plt.figure(figsize=[10, 5])  # 设置图片大小10x5
# 创建1行1列的1个子图,使用等距网格投影
ax1 = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())
ax1.add_feature(cfeature.COASTLINE)  # 添加海岸线
gl = ax1.gridlines(draw_labels=True,dms=True,x_inline=False,y_inline=False)  # 绘制网格线
gl.top_labels = False  # 通过对gridliner对象,这里即为gl变量进行设置,关闭顶部标签
gl.right_labels = False  # 通过对gridliner对象,这里即为gl变量进行设置,关闭右侧标签
ax1.set_extent([0, 180, 0, 90])  # 将图形范围设置为东北半球
plt.show()

3.1

# 不同中心经度的等距网格投影
# 导入库
import matplotlib.pyplot as plt  # 调用matplotlib.pyplot模块,用于调用基础绘图
import cartopy.crs as ccrs  # 调用cartopy.crs模块,用于创建投影
import cartopy.feature as cfeature  # 调用cartopy.feature模块,引入默认地理信息
import cartopy.mpl.ticker as cticker  # 调用cartopy.mpl.ticker模块,用于修改经纬度刻度格式# 创建图形
fig = plt.figure(figsize=[10, 5])  # 设置图片大小10x5
# 创建一个默认的等距网格投影子图
ax1 = fig.add_subplot(1, 2, 1, projection=ccrs.PlateCarree(central_longitude=0))  # 创建1行2列的1个子图,使用等距网格投影,中心经度0°
ax1.add_feature(cfeature.COASTLINE)  # 添加海岸线
# 创建一个中心经度为120°E的等距网格投影子图
ax2 = fig.add_subplot(1, 2, 2, projection=ccrs.PlateCarree(central_longitude=180))  # 创建1行1列的1个子图,使用等距网格投影,中心经度180°
ax2.add_feature(cfeature.COASTLINE)  # 添加海岸线
plt.show()

3.2

# 绘制兰伯特投影
# 导入库
import matplotlib.pyplot as plt  # 调用matplotlib.pyplot模块,用于调用基础绘图函数
import cartopy.crs as ccrs  # 调用cartopy.crs模块,用于创建投影
import cartopy.feature as cfeature  # 调用cartopy.feature模块,引入默认地理信息# 创建图形
fig = plt.figure(figsize=[10, 5])  # 设置图片大小10x5
ax1 = fig.add_subplot(1, 1, 1, projection=ccrs.LambertConformal(central_longitude=120, cutoff=20))  # 创建兰伯特投影子图
ax1.add_feature(cfeature.COASTLINE)  # 添加海岸线
gl = ax1.gridlines(draw_labels=True,dms=True,x_inline=False,y_inline=False)  # 添加网格线
gl.top_labels = False  # 通过对gridliner对象,这里即为gl变量进行设置,关闭顶部标签
plt.show()

3.3

# 基础北极、南极极地投影绘制
# 导入库
import matplotlib.pyplot as plt  # 调用matplotlib.pyplot模块,用于调用基础绘图函数
import cartopy.crs as ccrs  # 调用cartopy.crs模块,用于创建投影fig = plt.figure(figsize=[10, 5])  # 设置图片大小10x5# 北极极地投影
# 创建1行2列的1个子图,使用北极地投影
ax1 = fig.add_subplot(1, 2, 1, projection=ccrs.NorthPolarStereo())
ax1.add_feature(cfeature.COASTLINE)  # 添加海岸线
gl1 = ax1.gridlines(draw_labels=True, x_inline=False, y_inline=True)  # 添加网格栅格线
ax1.set_title('NorthPolarStereo')# 南极极地投影
# 创建1行2列的1个子图,使用南极地投影
ax2 = fig.add_subplot(1, 2, 2, projection=ccrs.SouthPolarStereo())
ax2.add_feature(cfeature.COASTLINE)  # 添加海岸线
gl2 = ax2.gridlines(draw_labels=True, x_inline=False, y_inline=True)  # 添加网格栅格线
ax2.set_title('SouthPolarStereo')
plt.show()

Python Cartopy地图投影【2】相关推荐

  1. Python Cartopy地图投影【1】

    Cartopy是一个专门用于创建地图的Python库.它使用matplotlib来创建地图,并提供了一系列预定义的投影(即地图投影),以及工具来绘制地图轮廓,海岸线,国家边界等. 然后,可以使用以下代 ...

  2. python cartopy绘制北极/python绘图函数封装/python气象绘图

    因为研究需要大量出图,于是将常用的绘图函数封装,提高绘图效率. 绘图函数 函数主要有两部分组成: 1.完成解决北极投影重叠的z_masked函数,详情参见python cartopy极地投影重叠解决 ...

  3. python绘制北极风场与位势高度场/python cartopy极地投影重叠问题解决

    背景 python作为胶水语言,近年来在气象数据处理与可视化中有着极为广泛地应用,诸多第三方库极为便利地满足了气象研究者处理数据与绘图的要求,处理数据的包:xarray.pandas,读取不同气象格式 ...

  4. 用Python做地图投影 - 多面孔的世界

    (如需转载,请在显著位置注明个人微信公众号stdrei) 为什么要做地图投影 简而言之,地球表面是一个三维的曲面,在曲面上进行测量是非常困难的.不信你拿个地球仪量一下两点的距离或者计算个夹角试试.将三 ...

  5. python Cartopy 船舶轨迹数据可视化 【GPS AIS VMS】

    更新: 最近又发现了更好用的工具keplergl,基本不需要写代码,拿着数据拆箱即用. 欢迎访问我的这篇博客:酷炫Keplergl 实现功能:将轨迹数据可视化到地图上 适用范围:车辆.船舶 等含有GP ...

  6. 大圆距离matlab代码,python – cartopy:大圆距离线的更高分辨率

    我想在两点之间绘制一个很大的圆距离.我在cartopy docs中找到了一个(introductionctory_examples / 01.great_circle.html): import ma ...

  7. WRF后处理:python cartopy绘制土地利用/土地分类图//python绘制WRF下垫面类型(以北极为例)

    下垫面类型对于WRF的地表过程十分重要,而在我们研究WRF的地表过程之前,需要对输入的土地利用类型进行一些绘制,以便后续的修改. 土地利用分类图的特点主要在于色标的设置,而在Github中,已有人根据 ...

  8. python绘制地图地图cartopy_python Cartopy的基础使用详解

    前言 常用地图底图的绘制一般由Basemap或者cartopy模块完成,由于Basemap库是基于python2开发的一个模块,目前已经不开发维护.故简单介绍cartopy模块的一些基础操作. 一.基 ...

  9. python绘制极地投影/cartopy20.0+解决python极地投影问题/python nc可视化——以北极10m风场为例

    在之前的博客.python极地极地投影绘制中,我曾经提到过python cartopy在极地投影中难以添加坐标标签的问题,当时解决方法是使用文本的方式添加,但这种方式的麻烦且并不统一适用.而在之后的可 ...

  10. python分析红楼梦出现的虚词词频统计,python对红楼梦的每一章节进行词频统计

    python对红楼梦的每一章节进行词频统计 python对红楼梦的每一章节进行词频统计 import jieba f=open("G:\\红楼梦.txt","r" ...

最新文章

  1. cannot import name ‘softmax‘ from ‘scipy.special‘
  2. 自学python需要买书吗-学习python需要有编程基础吗
  3. 理解一条语句:SELECT difference(sum(value)) FROM mq_enqueue WHERE channel =~ /ActiveMQ_TEST/ AND $tim...
  4. PAT_B_1017_Java(20分)
  5. java中HashMap的用法
  6. 全新一代人工智能计算引擎MaxCompute杭州开服,强化阿里云大数据能力,比肩谷歌微软...
  7. linux firefox 脚本,linux下调整firefox的有用设置(高分辨率下需要)
  8. 一款开源免费且快速,高效和安全的跨平台备份程序:Restic使用教程
  9. Mysql优化_ORDER BY和GROUP BY 的优化讲解(单路排序和双路排序)
  10. 《Java编程的逻辑》终于上市了!,java开发面试笔试题
  11. javascript基础知识系列:DOM学习
  12. 十步教你如何接手别人的代码!
  13. 12. Laravel 4 迁移数据填充
  14. 一体化数据库管理和迁移工具Navicat Premium for Mac
  15. 系统架构设计-项目管理
  16. interpretable machine learning
  17. 微观社会调查数据:中国家庭追踪调查 CFPS
  18. 系统流程图、数据流程图、IPO图和甘特图
  19. Nape 不动刚体的碰撞交互
  20. 梦中情人sbl新变种snow.exe,snowfall.exe的分析

热门文章

  1. 基于javaweb的前台展示+后台管理结合的在线购书系统(java+springboot+ssm+mysql)
  2. 汇编语言程序设计-钱晓捷(第五版)第一章-汇编语言基础知识
  3. 黑盒测试方法用例设计详解
  4. 洛天依-元宵吃货节歌词
  5. 不用软件直接查询QQ好友的IP地址(二) 通过 Ping 得知对方是否联网在线(与QQ是否上线无关)
  6. 教务管理系统数据字典mysql_数据库课程设计报告--教务管理系统设计
  7. 哈理工OJ—1598【DP最长公共子序列O(nlogn)】
  8. SVPWM算法原理及详解
  9. 用代码生成PDF文档的方法
  10. Github客户端下载(安卓系统)