Cartopy 0.20 最新功能

背景介绍

Cartopy 是英国气象局开发的地图绘图包,实现了 Basemap 的大部分功能,利用了强大的PROJ.4、NumPy和Shapely库,并在Matplotlib之上构建了一个编程接口,用于创建发布质量的地图,并进行地理空间数据处理与空间数据分析,对于地图学与地理信息系统、大气科学专业非常受用。

虽然,

  • Cartopy的安装依赖较为复杂,推荐使用conda install cartopy进行安装,但很多同学可能因为安装就从入门到放弃了qaq。
  • 低版本的Cartopy(0.18及以下)功能仍然比较有限,对于非等经纬度的投影不能进行标注等细节问题。

但是,

  • ModelWhale提供了气象数据分析镜像,免去了环境配置和模块安装的困扰,提供了常用的Python模块,不定期进行维护和更新
  • 最新基于Python3.9版本镜像中包含Cartopy 0.20模块,集成了很多新功能,并且更加稳定和友好

新功能介绍

网址:https://scitools.org.uk/cartopy/docs/latest/whatsnew/v0.20.html

新功能展示

1.支持六边形图(Hexbin)

fig = plt.figure(figsize=(10, 5))
ax = plt.axes(projection=ccrs.Robinson())
ax.coastlines()x, y = np.meshgrid(np.arange(-179, 181), np.arange(-90, 91))
data = np.sqrt(x**2 + y**2)
ax.hexbin(x.flatten(), y.flatten(), C=data.flatten(),gridsize=20, transform=ccrs.PlateCarree())
plt.show()

2.引入了古德分瓣投影

fig = plt.figure(figsize=(10, 5))
proj = ccrs.InterruptedGoodeHomolosine(central_longitude=-160,emphasis='ocean')
ax = plt.axes(projection=proj)
ax.stock_img()
plt.show()

3.解决了不同投影下的经纬度标注问题

rotated_crs = ccrs.RotatedPole(pole_longitude=120.0, pole_latitude=70.0)
ax0 = plt.axes(projection=rotated_crs)
ax0.set_extent([-6, 1, 47.5, 51.5], crs=ccrs.PlateCarree())
ax0.add_feature(cfeature.LAND.with_scale('110m'))
ax0.gridlines(draw_labels=True, dms=True, x_inline=False, y_inline=False)plt.figure(figsize=(6.9228, 3))
ax1 = plt.axes(projection=ccrs.InterruptedGoodeHomolosine())
ax1.coastlines(resolution='110m')
ax1.gridlines(draw_labels=True)plt.figure(figsize=(7, 3))
ax2 = plt.axes(projection=ccrs.PlateCarree())
ax2.coastlines(resolution='110m')
gl = ax2.gridlines(draw_labels=True)
gl.top_labels = False
gl.right_labels = False
plt.show()


4.对图像进行投影

fig = plt.figure(figsize=(8, 12))
# !wget https://lance-modis.eosdis.nasa.gov/imagery/gallery/2012270-0926/Miriam.A2012270.2050.2km.jpg
fname = '/home/mw/project/Miriam.A2012270.2050.2km.jpg'
img_extent = (-120.67660000000001, -106.32104523100001, 13.2301484511245, 30.766899999999502)
img = plt.imread(fname)
ax = plt.axes(projection=ccrs.PlateCarree())
ax.set_xmargin(0.05)
ax.set_ymargin(0.10)
ax.imshow(img, origin='upper', extent=img_extent, transform=ccrs.PlateCarree())
ax.coastlines(resolution='50m', color='black', linewidth=1)
ax.gridlines(draw_labels=True, dms=True, x_inline=False, y_inline=False)
ax.plot(-117.1625, 32.715, 'bo', markersize=7, transform=ccrs.Geodetic())
ax.text(-117, 33, 'San Diego', transform=ccrs.Geodetic())
plt.show()

5.与xarray完美兼容

ds = xr.open_dataset('/home/mw/input/OISSTV27010/anom/sst.day.anom.2015.nc')
ds

ssta = ds.anom.sel(time='2015-07-01', method='nearest')
fig = plt.figure(figsize=(9,6))
ax = plt.axes(projection=ccrs.Robinson())
ax.coastlines()
gl = ax.gridlines(draw_labels=True, dms=True, x_inline=False, y_inline=False)
gl.top_labels = False
gl.right_labels = False
ssta.plot(ax=ax, transform=ccrs.PlateCarree(),vmin=-5, vmax=5, cmap=cmaps.cmp_b2r,cbar_kwargs={'shrink': 0.4})
plt.show()

6.绘制兰伯特投影的中国版图

标准地图服务:http://211.159.153.75/

标准地图依据中国和世界各国国界线画法标准编制而成,可用于新闻宣传用图、书刊报纸插图、广告展示背景图、工艺品设计底图等,也可作为编制公开版地图的参考底图。社会公众可以免费浏览、下载标准地图,直接使用标准地图时需要标注审图号。

# 设置投影
proj = ccrs.LambertConformal(central_longitude=110, central_latitude=90,standard_parallels=(25, 47))# 创建图例
fig = plt.figure(figsize=(10, 8),frameon=True)
ax = fig.add_axes([0.08, 0.05, 0.8, 0.94], projection=proj)
ax.set_extent([80, 130, 15, 55],crs=ccrs.PlateCarree())
ax.tick_params(labelsize=15)# 添加基础地理图层
ax.add_feature(cfeature.OCEAN.with_scale('50m'))
ax.add_feature(cfeature.LAND.with_scale('50m'))
ax.add_feature(cfeature.RIVERS.with_scale('50m'))
ax.add_feature(cfeature.LAKES.with_scale('50m'))# 添加省边界和九段线
province = shpreader.Reader('/home/mw/input/china_shp3798/province.shp')
nineline = shpreader.Reader('/home/mw/input/china_shp3798/nine_line.shp')
ax.add_geometries(province.geometries(), crs=ccrs.PlateCarree(), edgecolor='k',facecolor='none')
ax.add_geometries(nineline.geometries(), crs=ccrs.PlateCarree(), color='#8B0000')# 标注经纬度
gl = ax.gridlines(draw_labels=True, x_inline=False, y_inline=False, dms=True,xlocs=np.arange(50,170,10), ylocs=np.arange(0,60,10), linestyle='--', lw=1, rotate_labels=False,color='dimgrey', crs=ccrs.PlateCarree())
gl.top_labels = False
gl.right_labels = False# 添加南海附图
sub_ax = fig.add_axes([0.75, 0.095, 0.15, 0.2],projection=ccrs.LambertConformal(central_latitude=90,central_longitude=110))
# 添加基础地理图层
sub_ax.add_feature(cfeature.OCEAN.with_scale('50m'))
sub_ax.add_feature(cfeature.LAND.with_scale('50m'))
sub_ax.add_feature(cfeature.RIVERS.with_scale('50m'))
sub_ax.add_feature(cfeature.LAKES.with_scale('50m'))# 添加省边界和九段线
sub_ax.set_extent([106, 120, 2, 24],crs=ccrs.PlateCarree())
sub_ax.add_geometries(province.geometries(), crs=ccrs.PlateCarree(), edgecolor='k',facecolor='none')
sub_ax.add_geometries(nineline.geometries(), crs=ccrs.PlateCarree(), color='#8B0000')plt.show()

Cartopy 0.20 最新功能 —— Cartopy 装不上别慌,内附解决方案相关推荐

  1. 完美解决AutoCAD2012,AutoCAD2013本身电脑里有NET4.0或以上版本却装不上的问题

    适用情况:电脑里本身有NET4.0或4.5版本,并且正确安装.或本身你就装有AutoCAD2013或AutoCAD2012要装AutoCAD2012或AutoCAD2013却装不上的情况 如图1所示. ...

  2. 1、MySQL 8.0.20最新版本在Linux上安装

    文章目录 1.下载安装包 2.解压安装 3.拷贝到 /usr/local并重命名为mysql 4.删除/opt目录下解压的文件(也可以保留)只留下安装包 5.创建mysql用户组和用户并修改权限 6. ...

  3. 【翻新重写】WWDC 后苹果最新 App Store 审核条款!「内附最新开发者指南」

    WWDC 2016 大会之后,苹果公司发布了四个全新平台:iOS,macOS,watchOS 和 tvOS.并且在此之后,苹果应用商店审核条款也同时进行了更新--貌似不算进行了更新,简直就是重写!上个 ...

  4. 2、Mysql 8.0.20最新版本修改密码

    文章目录 1.mysql 配置文件目录添加如下命令行跳过密码:/etc/my.cnf 2.重启mysql 服务 3.登录mysql 不输入密码 4.免密登录进入后进行修改 5.记得去/etc/my.c ...

  5. 微信公众号最新留言评论管理功能怎么开通获取?(内附留言功能开通视频链接)

    腾讯针对公众号留言这一功能经过多次调整,下面为大家详细讲讲其规则,最开始的时候只要长期坚持发原创文章,等拿到腾讯的原创保护邀请后,就可以拥有留言这个功能了,邀请如下图所示: 接下来大概是2017年年底 ...

  6. 如何从0开始撰写一篇CS论文?(内附写作流程图)

    作为曾经熬通宵肝论文的过来人,小编要吐槽,论文写久了真的会头秃,尤其是确定选题和创新点的时候,是薅头发事件的高发阶段. 对于那些导师放养.在自己的摸索中磕磕绊绊前行的科研新手们, 焦虑总是瞅准时机就扑 ...

  7. 从0开发小程序,一个月时间实现盈利!内附抖音去水印原理

    一.开发前奏 1.背景 近几年短视频行业的兴起,涌现出抖音快手等优秀的app,但是在app上发现优秀视频想要下载到本地时,又奈何总是全程有水印又末尾有平台独白,搜索众多app和小程序大部分要嘛广告众多 ...

  8. 20道Java实习生笔试面试选择题(内附答案解析)

    1.以下对继承的描述错误的是(A) A.Java中的继承允许一个子类继承多个父类 B.父类更具有通用性,子类更具体 C.Java中的继承存在的传递性 D.当实例化子类时会递归调用父类中的构造方法 解析 ...

  9. 【4.0】 数学建模中拟合算法详解|内附清晰图片和详细代码实现

    一.前言 与插值问题不同,在拟合问题中不需要曲线一定经过给定的点.拟合问题的目标是寻求一个函数(曲线),使得该曲线在某种准则下与所有的数据点最为接近,即曲线拟合的最好(最小损失函数) 插值和拟合的区别 ...

最新文章

  1. Pytorch 中的 5 个非常有用的张量操作
  2. 从零开始学Win32平台缓冲区溢出(Part1)
  3. Windows Phone 7 中的切换应用
  4. 13 种 JavaScript 代码技巧
  5. Java实例_综合实践5.简单工厂模式
  6. 兰州大学第一届『飞马杯』程序设计竞赛 - ★★体育课排队★★(二分+最大流)
  7. 010-python基础-数据类型-字符串操作
  8. 【OS学习笔记】二十三 保护模式七:保护模式下任务的隔离与任务的特权级概念
  9. Ballast,一种精准控制 Go GC 提高性能的方法
  10. 文件跨服务器传输_跨桌面设备传输文件的最优选?
  11. 机器学习笔记(二)线性回归模型实现
  12. ubuntu 1804.1 升级失败:Hash Sum mismatch
  13. 端口和波特率测试软件,端口和波特率检测工具
  14. Arduino 入门教程(十五) WS2811跑马灯
  15. mysql环境变量配置还是不行_mysql环境变量配置与Error 1045的解决方案
  16. 无秘app android2.2.3.5能用么,关于“无秘”APP的竞品分析
  17. 苹果电脑Mac中delete键的七种用法
  18. soot的配置以及常见问题的记录
  19. 主动降噪(Active Noise Control)
  20. 《点燃我,温暖你》朱韵李峋爱心代码

热门文章

  1. 2022.07.25 学习笔记
  2. Redis 之 SessionCallback RedisCallback 使用
  3. Maven Assembly插件介绍
  4. 心率检测实现报告(一)
  5. python计算等差数列_python 等差数列末项计算方式
  6. 微信公众号消息text换行问题
  7. 国科大学习资料--人工智能原理与算法-第十次作业解析(学长整理)
  8. 处理BigDecimal字段, java.math.BigDecimal cannot be cast to [Ljava.lang.Object;
  9. ROCBOSS开源微社区轻论坛类源码
  10. php开启sockets模块,wdlinux 增加php的sockets模块