Python Cartopy地图投影【3】

上两期文章见:
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.xdnf.cn/news/145627.html

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

相关文章

怎么修改jupyter lab 的工作路径而不是直接再桌面路径打开

要修改Jupyter Lab的工作路径,你可以按照以下步骤操作: 打开终端或命令提示符窗口。 输入 jupyter lab --generate-config 命令来生成Jupyter Lab的配置文件。 找到生成的配置文件,通常会位于 ~/.jupyter/jupyter_notebook_config.py。 使…

常用数学分布

正态分布(高斯分布) 若随机变数 X X X 服从一个期望 μ \mu μ,标准差 的正态分布 σ \sigma σ,则记为 X ≈ N ( μ , σ 2 ) X \approx N(\mu,\sigma^2) X≈N(μ,σ2),其密度函数为: f ( x ) 1 σ …

唤醒手腕 Matlab 游戏编程常用技术知识点详细教程(更新中)

Figure 窗口初始化 figure 使用默认属性值创建一个新的图窗窗口。生成的图窗为当前图窗。f figure(___) 返回 Figure 对象。可使用 f 在创建图窗后查询或修改其属性。figure(f) 将 f 指定的图窗作为当前图窗,并将其显示在其他所有图窗的上面。 figure(n) 查找 Nu…

raw智能照片处理工具DxO PureRAW mac介绍

DxO PureRAW Mac版是一款raw智能照片处理工具,该软件采用了智能技术,以解决影响所有RAW文件的七个问题:去马赛克,降噪,波纹,变形,色差,不想要的渐晕,以及缺乏清晰度。 Dx…

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

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

【Office】超简单,Excel快速完成不规则合并单元格排序

演示效果:将下图已经合并了的单元格按照单位名称排序并将同一个单位的数据合并在了一起。 Step 1:取消合并 选中所有的数据后,点击 “开始”-“合并单元格” ,并且取消数据源的合并。 Step 2:填充数据 选中需要填…

C/C++字符函数和字符串函数详解————长度受限制的字符串函数

个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.前言 2.长度受限制的字符…

1.5.C++项目:仿mudou库实现并发服务器之socket模块的设计

项目完整版在: 一、socket模块:套接字模块 二、提供的功能 Socket模块是对套接字操作封装的一个模块,主要实现的socket的各项操作。 socket 模块:套接字的功能 创建套接字 绑定地址信息 开始监听 向服务器发起连接 获取新连接 …

应用架构的演进:亚马逊的微服务实践

当你在亚马逊上购物时,或许不会想到,你看到的这个购物网站,其背后技术架构经历了什么样的变迁与升级。 还记得上世纪 90 年代,那个只卖书的网上书店吗?那时的亚马逊,不过是一个架构简单的网站,所有的功能都堆积在一个庞大的软件堡垒里。随着更多业务的增加、更新和迭代,这个软…

二、BurpSuite Scan扫描

1.Scan details 解释:选择只是爬行还是爬行加代码审计 Scan Type:选择爬行或者代码审计URLs to scan:定义要扫描的网址。Burp将从这些网址开始进行爬行,并默认将包括指定网址文件夹下的所有内容。Protocol settings:使…

Unity2023打包首包从78Mb到3.0Mb-震惊-我做对了什么

(全程并没有使用AssetBundle , 历史原因,Resources目录还有不少资源残留) 曾经的我在2019打包过最小包10m左右,后来发现到了Unity2020之后暴增到40m,又加上2023版本URP,1个Unity输出包可能至少55M 如下图…

试图一文彻底讲清 “精准测试”

在软件测试中,我们常常碰到两个基本问题(困难): 很难保障无漏测:我们做了大量测试,但不清楚测得怎样,对软件上线后会不会出问题,没有信心; 选择待执行的测试用例&#…

【数据结构篇】堆

文章目录 堆前言基本介绍认识堆堆的特点堆的分类堆的操作堆的常见应用 堆的实现JDK 自带的堆手动实现堆 堆 前言 本文主要是对堆的一个简单介绍,如果你是刚学数据结构的话,十分推荐看这篇文章,通过本文你将对堆这个数据结构有一个大致的了解…

职业规划,什么是职业兴趣 - 我喜欢做什么?

能够在工作岗位上面做出成绩的人,都是结合自身兴趣,对职业进行合理规划的那一类。尤其是步入中年以后,能够创造出巨大价值的人,无一例外都是喜欢自己职业的人。没有将兴趣融入工作的人,只能够忍受默默无闻地活着&#…

Unity 内存性能分析器 (Memory Profiler)

一、 安装 安装有两种方式一: add package : com.unity.memoryprofiler方式二: From Packages : Unity Registry 搜索 Memory Profiler 二、 使用 打开:Windows - > Analysis - > Memory Profiler 打开MemoryProfiler界面&#xff0…

蓝桥杯每日一题2023.9.30

蓝桥杯大赛历届真题 - C&C 大学 B 组 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 对于此题,首先想到了dfs进行一一找寻,注意每次不要将重复的算进去,故我们每次循环可以记录一个开始的位置,下一次到这个位置时,…

细胞机器人系统的概念

摘要 本文讨论了一种新型机器人系统的理论和工程的概念基础。该系统由协作完成任务的自主机器人单元组成。本文在描述了该系统与细胞自动机和神经网络的相关性和差异后,建立了该系统的基础属性及其对机器人单元结构的影响、它们操作的空间以及它们完成全局任务的算法…

深入理解操作系统- - 进程篇(1)

目录 进程解释: process in memory(进程在内存中包含什么) : 并发的进程: 进程定义: 个人定义: 书本定义: 进程状态: 进程何时离开CPU: 内部事件: 外部事件: 进…

C++ -- 学习系列 std::deque 的原理与使用

一 deque 是什么? std::deque 是 c 一种序列式容器,其与 vector 类似,其底层内存都是连续的,不同的地方在于, vector 是一端开口,在一端放入数据与扩充空间,而 deque 是双端均开口,都可以放…

pip version 更新

最近报了一个错: 解决办法: 在cmd输入“conda install pip” conda install pip 完了之后再输入: python -m pip install --upgrade pip ok.