Python绘制南北极地图

news/2024/11/30 0:27:44/文章来源:https://www.cnblogs.com/echohye/p/18577839

import matplotlib.pyplot as plt
import numpy as np
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import matplotlib.path as mpathdef plot_polar_map(dmeridian: float = 30.0,  # 经度网格线间隔dparallel: float = 15.0):  # 纬度网格线间隔"""绘制北极区域的极区投影地图,并添加经纬度网格和标签。参数:dmeridian (float): 经度网格线的间隔(单位:度),默认为30.0dparallel (float): 纬度网格线的间隔(单位:度),默认为15.0"""# 创建图形对象,设置尺寸为8x8英寸fig = plt.figure(figsize=[8, 8])# 设置北极区域的极区投影projection = ccrs.NorthPolarStereo()ax = plt.axes(projection=projection)# 绘制海岸线ax.coastlines(linewidths=0.5)# 添加陆地特征,设置颜色为浅灰色ax.add_feature(cfeature.LAND, facecolor='lightgray')# 设置显示范围,限制显示区域为北极ax.set_extent([0, 360, 0, 90], ccrs.PlateCarree())# 计算经纬度网格线的数量num_merid = int(360.0 / dmeridian + 1.0)  # 经度网格线的数量num_parra = int(90.0 / dparallel + 1.0)   # 纬度网格线的数量# 绘制网格线gl = ax.gridlines(crs=ccrs.PlateCarree(),xlocs=np.linspace(0.0, 360.0, num_merid),ylocs=np.linspace(0.0, 90.0, num_parra),linestyle="--", linewidth=1, color='k', alpha=0.5)# 创建圆形路径用于设置图像边界theta = np.linspace(0, 2 * np.pi, 120)verts = np.vstack([np.sin(theta), np.cos(theta)]).Tcenter, radius = [0.5, 0.5], 0.5circle = mpath.Path(verts * radius + center)# 设置图形边界为圆形ax.set_boundary(circle, transform=ax.transAxes)# 设置标签对齐方式va = 'center'  # 垂直对齐方式,选项有:'center', 'bottom', 'top'ha = 'center'  # 水平对齐方式,选项有:'right', 'left'# 设置度符号degree_symbol = u'\u00B0'# 绘制经度标签lond = np.linspace(0, 360, num_merid)latd = np.zeros(len(lond))for alon, alat in zip(lond, latd):projx1, projy1 = ax.projection.transform_point(alon, alat, ccrs.Geodetic())if alon > 0 and alon < 180:ha = 'left'va = 'center'if alon > 180 and alon < 360:ha = 'right'va = 'center'if np.abs(alon - 180) < 0.01:ha = 'center'va = 'bottom'if alon == 0.:ha = 'center'va = 'top'if alon < 360.:txt = f' {int(alon)} ' + degree_symbolax.text(projx1, projy1, txt, va=va, ha=ha, color='g')# 绘制纬度标签(这里选择了经度315作为示例)lond2 = 315 * np.ones(len(lond))latd2 = np.linspace(0, 90, num_parra)va, ha = 'center', 'center'for alon, alat in zip(lond2, latd2):projx1, projy1 = ax.projection.transform_point(alon, alat, ccrs.Geodetic())txt = f' {int(alat)} ' + degree_symbolax.text(projx1, projy1, txt, va=va, ha=ha, color='r')# 设置窗口标题fig.canvas.manager.set_window_title('北极区域极区投影地图')# 显示绘制的图形plt.show()# 调用函数绘制极区地图
plot_polar_map(dmeridian=30.0, dparallel=15.0)
查看绘制南极代码
import matplotlib.pyplot as plt
import numpy as np
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import matplotlib.path as mpathdef plot_south_polar_map(dmeridian: float = 30.0,  # 经度网格线间隔dparallel: float = 15.0):  # 纬度网格线间隔"""绘制南极区域的极区投影地图,并添加经纬度网格和标签。参数:dmeridian (float): 经度网格线的间隔(单位:度),默认为30.0dparallel (float): 纬度网格线的间隔(单位:度),默认为15.0"""# 创建图形对象,设置尺寸为8x8英寸fig = plt.figure(figsize=[8, 8])# 设置南极区域的极区投影projection = ccrs.SouthPolarStereo()ax = plt.axes(projection=projection)# 绘制海岸线ax.coastlines(linewidths=0.5)# 添加陆地特征,设置颜色为浅灰色ax.add_feature(cfeature.LAND, facecolor='lightgray')# 设置显示范围,限制显示区域为南极ax.set_extent([0, 360, -90, 0], ccrs.PlateCarree())# 计算经纬度网格线的数量num_merid = int(360.0 / dmeridian + 1.0)  # 经度网格线的数量num_parra = int(90.0 / dparallel + 1.0)  # 纬度网格线的数量# 绘制网格线gl = ax.gridlines(crs=ccrs.PlateCarree(),xlocs=np.linspace(0.0, 360.0, num_merid),ylocs=np.linspace(-90.0, 0.0, num_parra),linestyle="--", linewidth=1, color='k', alpha=0.5)# 创建圆形路径用于设置图像边界theta = np.linspace(0, 2 * np.pi, 120)verts = np.vstack([np.sin(theta), np.cos(theta)]).Tcenter, radius = [0.5, 0.5], 0.5circle = mpath.Path(verts * radius + center)# 设置图形边界为圆形ax.set_boundary(circle, transform=ax.transAxes)# 设置标签对齐方式va = 'center'  # 垂直对齐方式,选项有:'center', 'bottom', 'top'ha = 'center'  # 水平对齐方式,选项有:'right', 'left'# 设置度符号degree_symbol = u'\u00B0'# 绘制经度标签lond = np.linspace(0, 360, num_merid)latd = np.zeros(len(lond))for alon, alat in zip(lond, latd):projx1, projy1 = ax.projection.transform_point(alon, alat, ccrs.Geodetic())if alon > 0 and alon < 180:ha = 'left'va = 'center'if alon > 180 and alon < 360:ha = 'right'va = 'center'if np.abs(alon - 180) < 0.01:ha = 'center'va = 'bottom'if alon == 0.:ha = 'center'va = 'top'if alon < 360.:txt = f' {int(alon)} ' + degree_symbolax.text(projx1, projy1, txt, va=va, ha=ha, color='g')# 绘制纬度标签(这里选择了经度315作为示例)lond2 = 315 * np.ones(len(lond))latd2 = np.linspace(-90, 0, num_parra)va, ha = 'center', 'center'for alon, alat in zip(lond2, latd2):projx1, projy1 = ax.projection.transform_point(alon, alat, ccrs.Geodetic())txt = f' {int(alat)} ' + degree_symbolax.text(projx1, projy1, txt, va=va, ha=ha, color='r')# 设置窗口标题fig.canvas.manager.set_window_title('南极区域极区投影地图')# 显示绘制的图形plt.show()# 调用函数绘制南极地图
plot_south_polar_map(dmeridian=30.0, dparallel=15.0)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源 - Ideal库 - Excel帮助类,TableHelper实现(二)

本文实现对象集合与DataTable的转换,包括按列名数组、列名-类型键值对、类创建表格的方法,并对类进行类型校验和反射获取属性信息,单元测试代码已上传至代码库。书接上回,我们今天开始实现对象集合与DataTable的相互转换。01、接口设计 上文中已经详细讲解了整体设计思路以…

大语言模型中的MoE

1.概述 MoE代表“混合专家模型”(Mixture of Experts),这是一种架构设计,通过将不同的子模型(即专家)结合起来进行任务处理。与传统的模型相比,MoE结构能够动态地选择并激活其中一部分专家,从而显著提升模型的效率和性能。尤其在计算和参数规模上,MoE架构能够在保持较…

ssh控制远程设备连接wifi

查看wifisudo nmcli device wifi连接wifisudo nmcli device wifi connect MERCURY_21B8 password 密码提示连接成功Device wlan0 successfully activated with 5c7d67b4-145d-4848-83cf-3b51795503fb

Kubeapps可视化管理Helm Chart包

目录一.基于helm部署kubeapps1.kubeapps介绍2.添加kubeapps的repo3.搜索kubeapps4.下载指定的kubeapps版本5.基于helm部署kubeapps6.访问kubeapps的WebUI二.通过kubeapps部署应用案例1 通过kubeapps查看已经部署的Chart2.通过kubeapps搜索Chart信息 一.基于helm部署kubeapps 1.…

剪映设置封面时候如何防止文字遮挡人物 All In One

剪映设置封面时候如何防止文字遮挡人物 All In One PS 图层叠加 / 前景后景 / 透明度 照片 人物抠图 + 画中画剪映设置封面时候如何防止文字遮挡人物 All In One 原理分析 PS 图层叠加 / 前景后景 / 透明度 照片 人物抠图 + 画中画 solutionsFilmora ???人物抠图 图层叠加 图…

聊一下怎么10分钟速水中危CVE

怎么在10分钟里速水一个中危CVE题目是真的。今天晚上刚接触关于CVE的审计和提交。只能说:牛逼的是真牛逼,水的是真水。 我接下来教你,怎么在10分钟里找到一个CVE的中危漏洞并且提交。然后你就可以去咸鱼接单了,一个一铂快 打开https://code-projects.org/ 随机找一个水项目…

2024-2025-1 20241403 《计算机基础与程序设计》第十周学习总结

学期2024-2025-1 学号20241403 《计算机基础与程序设计》第十周学习总结 作业信息这个作业属于哪个课程 <班级的链接>2024-2025-1-计算机基础与程序设计](https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP)这个作业要求在哪里 <作业要求的链接>2024-2025-1计…

《Django 5 By Example》阅读笔记:p388-p454

《Django 5 By Example》学习第 15 天,p388-p454 总结,总计 66 页。 一、技术总结 1.celery 我觉得书中这种用法太简单了。 2.flower 用于监控 celery。 # 安装 pip install flower # 启动 celery -A myshop flower --basic-auth=root:root # 访问 http://127.0.0.1:555…

java学习11.29

去年22级报销管理系统基本完成,出差报销申请撤销,审批功能基本完成

Kustomize 设计理念与使用说明

Kustomize 设计理念与使用说明 一、设计理念 Kustomize 的设计理念是基于"基础配置 + 补丁"的模式,这里解释一下为什么需要在 base 目录下创建基础配置:基础配置的重要性:base 目录下的配置是所有环境共享的基础配置 包含了服务最基本的定义和配置 确保了不同环境…

【评价指标】ROC曲线与AUC

一、前置知识 ​ 真阳性(TPR):正样本被正确分类个数与所有正样本的总数的比值 \[TPR = \frac{TP}{TP+FN} \]​ 假阳性(FPR):负样本被错误分类个数与所有负样本的总数的比值 \[FPR=\frac{FN}{FN+TN} \]​ 其中,TP表示正确分类的正样本,TN表示正确分类的负样本,FN表示错误分…

overleaf中使用中文

用的是这个博客里面的方法三,很方便。 https://blog.csdn.net/m0_52037292/article/details/109768317\usepackage{CJKutf8} \usepackage{CJKutf8}\begin{document}\begin{CJK*}{UTF8}{gbsn} 数学、中英文皆可以混排。You can intersperse math, Chinese and English (Latin …