Python Cartopy地图投影【3】

news2024/11/27 21:43:21

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

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

Python Cartopy地图投影【2】
第二期文章内容纲要:

2.3 set_extent:设置地理边界
2.4 set_boundary:裁剪子图形状
step3: 三种常见地图投影与实用技巧
3.1 等距网格投影 PlateCarree
3.2 兰伯特投影 LambertConformal
3.3 NorthPolarStereo (北)极地投影

step4 Cartopy 与 matplotlib 的结合

什么叫 Cartopy 与 matplotlib 的结合呢?就是用 matplotli 来画图、用 cartopy 来创建地图投影以及添加相应的地理特征要素。
在这里插入图片描述

import xarray as xr  # 用于读取数据
import matplotlib.pyplot as plt  # 用于绘图基础
import cartopy.crs as ccrs  # 用于调用投影
import cartopy.feature as cfeature  # 用于调用地理特征要素
f = xr.open_dataset('air.mon.mean.nc')  # 读取数据
t = f['air'].loc[:, 500, :, :][0]  # 取出第一个时刻的500hPa的温度场
lat = f['lat']  # 取出经度
lon = f['lon']  # 取出纬度
plt.figure(figsize=(5, 5))  # 创建figure对象
# ax1为Axes
ax1 = plt.subplot(1, 2, 1)  # 创建1行2列的第一个axes
c1 = ax1.contour(lon, lat, t)  # 绘制温度等值线
ax1.set_title('Axes')  # 标题
# ax2为GeoAxes
ax2 = plt.subplot(1, 2, 2, projection=ccrs.PlateCarree())  # 创建1行2列的第二个GeoAxes
c2 = ax2.contour(lon, lat, t, transform=ccrs.PlateCarree())  # 绘制等值线
ax2.add_feature(cfeature.COASTLINE)  # 添加海岸线
ax2.set_title('GeoAxes')  # 添加标题
plt.show();  # 展示图形

我们来看看在极坐标投影上绘图时,是否添加 transform 参数会分别得到怎样的结果?

# 极坐标投影是否添加transform参数的效果对比
import matplotlib.pyplot as plt
import numpy as np  # 用于生成圆形的参数
import cartopy.crs as ccrs
import cartopy.feature as cfeature  # 用于调用地理特征要素
import matplotlib.path as mpath  # 用于生成极坐标的圆形边界

f = xr.open_dataset('/home/mw/input/moyu1828/air.mon.mean.nc')  # 读取数据
t = f['air'].loc[:, 500, :, :][0]  # 取出第一个时刻的500hPa的温度场
lat = f['lat']  # 读取纬度
lon = f['lon']  # 读取经度

theta = np.linspace(0, 2*np.pi, 100)  # 生成极坐标圆形方程的theta参数
center, radius = [0.5, 0.5], 0.5  # 圆心和半径
verts = np.vstack([np.sin(theta), np.cos(theta)]).T
circle = mpath.Path(verts * radius + center)  # 生成圆形边界

fig = plt.figure(figsize=[5, 5])  # 生成figure对象
# 第一个子图,绘图时设置transform参数
# 生成1行2列第一个的北极极地投影子图
ax1 = fig.add_subplot(1, 2, 1, projection=ccrs.NorthPolarStereo())
ax1.set_extent([-180, 180, 30, 90], ccrs.PlateCarree())  # 设置投影范围为30°-90°N半球
ax1.gridlines()  # 绘制网格线
ax1.add_feature(cfeature.COASTLINE)  # 添加海岸线
ax1.set_boundary(circle, transform=ax1.transAxes)  # 设置子图边界
# 绘制等值线,指定transform=ccrs.PlateCarree()
ax1.contour(lon, lat, t, transform=ccrs.PlateCarree())
# 第二个子图,绘图时不设置transform参数
# 生成1行2列第二个的北极极地投影子图
ax2 = fig.add_subplot(1, 2, 2, projection=ccrs.NorthPolarStereo())
ax2.set_extent([-180, 180, 30, 90], ccrs.PlateCarree())  # 设置投影范围为30°-90°N半球
ax2.gridlines()  # 绘制网格线
ax2.add_feature(cfeature.COASTLINE)  # 添加海岸线
ax2.set_boundary(circle, transform=ax2.transAxes)  # 设置子图边界
ax2.contour(lon, lat, t)  # 绘制等值线,没有指定transform=ccrs.PlateCarree()
plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1052713.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最新AI智能创作系统ChatGPT商业源码+详细图文搭建部署教程+AI绘画系统

一、AI系统介绍 SparkAi创作系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧&am…

深度学习(2)---循环神经网络(RNN)

文章目录 一、序列数据和语言模型1.1 序列数据1.2 语言模型 二、循环神经网络(RNN)2.1 概述2.2 门控循环单元(GRU)2.3 长短期记忆网络(LSTM) 一、序列数据和语言模型 1.1 序列数据 1. 在深度学习中,序列数据(Sequence data)是指具有前后顺序…

华为:数据治理方法论

导读 本文先概要介绍了数据治理框架、数据治理组织架构和数据治理度量评估体系,然后结合华为数据治理案例和新冠疫情简单描述了数据治理的应用,最后描述了DAYU方法论在DataArts Studio产品上的落地以及详细的落地指导文档。 加gzh“大数据食铁兽”&am…

[题]欧拉函数 #欧拉函数

目录 欧拉函数一、用公式求代码 二、线性筛法求欧拉函数扩展欧拉定理 欧拉函数 AcWing 873. 欧拉函数 一、用公式求 定义:1 ~ N 中与 N 互质的数的个数被称为欧拉函数,记为ϕ(N)。 怎么求呢?? 有一个公式: N p1a1 X…

《Vue.js+Spring Boot全栈开发实战》简介

大家好,我是老卫。 恰逢中秋国庆双节,不想出门看人山,惟愿宅家阅书海! 今天开箱的这本书是《Vue.jsSpring Boot全栈开发实战》。 外观 从书名故名思议,就是基于Vue.jsSpring Boot来实现企业级应用全栈开发。 该书由…

(2023,ControlNet,CFGRW,diffusion,控制组合)向文本到图像扩散模型添加条件控制

Adding Conditional Control to Text-to-Image Diffusion Models 公众号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料) 目录 0. 摘要 1. 简介 2.相关工作 2.1. 微调神经网络 2.2. 图像扩散 …

基于electron25+vite4创建多窗口|vue3+electron25新开模态窗体

在写这篇文章的时候,查看了下electron最新稳定版本由几天前24.4.0升级到了25了,不得不说electron团队迭代速度之快! 前几天有分享一篇electron24整合vite4全家桶技术构建桌面端vue3应用示例程序。 https://www.cnblogs.com/xiaoyan2017/p/17…

【C++哈希应用】位图、布隆过滤器

【C哈希应用】位图、布隆过滤器 目录 【C哈希应用】位图、布隆过滤器位图概念位图的实现位图改造位图应用总结布隆过滤器布隆过滤器的提出布隆过滤器的概念布隆过滤器的查找布隆过滤器删除布隆过滤器优点布隆过滤器缺陷 作者:爱写代码的刚子 时间:2023.9…

【人物】知识就是金钱,程序员搞副业年入200万,各行各业的你也可以效仿

优秀的普通人 大家好,我是老李。一个专注于收集互联网有用信息的博主。 今天我们这一期要讲的是人物。讲什么人物呢? 首先我们不会讲一些特别知名和特别牛逼的人物,比如马云,雷军。刘强东。这些人固然很厉害很成功,…

【【萌新的RiscV学习之流水线控制-9】】

萌新的RiscV学习之流水线控制-9 我们按照在之前的单周期设计加入控制单元 那么我们能够在后续的设计中提供方便 我们也在流水线中加入一个control单元 我们先按照书上的指令op码值介绍一遍基本功能 接下来我们讲述control 的 控制效果 关于这些串口判别的使用 由于控制线从…

状态压缩dp,291. 蒙德里安的梦想

291. 蒙德里安的梦想 - AcWing题库 求把 NM 的棋盘分割成若干个 12 的长方形,有多少种方案。 例如当 N2,M4 时,共有 5 种方案。当 N2,M3 时,共有 3 种方案。 如下图所示: 输入格式 输入包含多组测试用例…

【yolov5】原理详解

一.模型框架 二.对Yolov5的描述 Yolov5的模型主要由 输入、Backbone、Neck、Head、输出 五部分组成。2.1 输入 输入 640x640x32.2 backbone Backbone:负责提取输入图像的特征。 在Yolov5中,常见的Backbone网络包括CSPDarknet53或ResNet。这些网络都是…

uniapp使用scroll-into-view实现锚点定位和滚动监听功能【楼层效果 / 侧边导航联动效果】

大佬网址&#xff1a; https://blog.csdn.net/weixin_47136265/article/details/132303570 效果 代码 <template><!-- 这里面有2个bug&#xff0c;已经解决&#xff0c;需要知道的地方1.methods里的scrollEvt(e)方法里面的 this.tabIndex index ! -1 ? index :…

python -m pip install --upgrade pip失败

显示这样的报错&#xff1a; You are using pip version 9.0.1, however version 23.2.1 is available. You should consider upgrading via the python -m pip install --upgrade pip command. 换源安装 python -m pip install --upgrade pip -i https://pypi.douban.com/s…

2023-9-30 JZ34 二叉树中和为某一值的路径

题目链接&#xff1a;二叉树中和为某一值的路径 import java.util.*;/** public class TreeNode {* int val 0;* TreeNode left null;* TreeNode right null;* public TreeNode(int val) {* this.val val;* }* }*/public class Solution {/*** 代码中的类名、…

1.物联网射频识别,RFID概念、组成、中间件、标准,全球物品编码——EPC码

1.RFID概念 RFID是Radio Frequency Identification的缩写&#xff0c;又称无线射频识别&#xff0c;是一种通信技术&#xff0c;可通过无线电讯号识别特定目标并读写相关数据&#xff0c;而无需与被识别物体建立机械或光学接触。 RFID&#xff08;Radio Frequency Identificati…

MyBatis的一级缓存和二级缓存:原理和作用

MyBatis的一级缓存和二级缓存&#xff1a;原理和作用 引言 在数据库访问中&#xff0c;缓存是一种重要的性能优化手段&#xff0c;它可以减少数据库查询的次数&#xff0c;加快数据访问速度。MyBatis作为一款流行的Java持久层框架&#xff0c;提供了一级缓存和二级缓存来帮助…

机器学习之广义增量规则(Generalized Delta Rule)

文章目录 广义增量规则的公式s型函数的增量规则 广义增量规则的公式 对于单层神经网络的增量规则&#xff0c;已经过时啦&#xff0c;现在存在一种更广义的增量规则形式。对于任意激活函数&#xff0c;增量规则表示如下式它与前一节的delta规则相同&#xff0c;只是ei被替换为…

案例突破——再探策略模式

再探设计模式 一、背景介绍二、 思路方案三、过程1. 策略模式基本概念2. 策略模式类图3. 策略模式基本代码策略类抽象策略类Context类客户端 4. 策略模式还可以进行优化的地方5. 对策略模式的优化&#xff08;配置文件反射&#xff09; 四、总结五、升华 一、背景介绍 在做项目…