Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >雷达系列:两种基于雷达基数据绘制雷达CAPPI图的方式

雷达系列:两种基于雷达基数据绘制雷达CAPPI图的方式

作者头像
用户11172986
发布于 2024-09-20 07:08:21
发布于 2024-09-20 07:08:21
32102
代码可运行
举报
文章被收录于专栏:气python风雨气python风雨
运行总次数:2
代码可运行

两种基于雷达基数据绘制雷达CAPPI图的方式

个人信息

公众号:气python风雨

温馨提示

由于可视化代码过长隐藏,可点击运行Fork查看 若没有成功加载可视化图,点击运行可以查看 ps:隐藏代码在【代码已被隐藏】所在行,点击所在行,可以看到该行的最右角,会出现个三角形,点击查看即可

前言

前不久pyart库更新了cappi函数,那么我们来进行一波测试

项目目标

本项目旨在解决在气象作图过程中CAPPI计算与绘图问题

项目方法

在以下内容中,将详细介绍两种方法进行CAPPI计算与绘图,帮助读者更好地进行气象数据可视化

更新依赖库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
!pip install --upgrade arm-pyart  -i https://pypi.mirrors.ustc.edu.cn/simple/
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Looking in indexes: https://pypi.mirrors.ustc.edu.cn/simple/
Requirement already satisfied: arm-pyart in /opt/conda/lib/python3.9/site-packages (1.17.0)
Collecting arm-pyart
  Downloading https://mirrors.ustc.edu.cn/pypi/packages/11/ea/90db3ef2b24f97a5dd6addf0f1627688db120298908dec067fa8e80b466b/arm_pyart-1.19.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.8 MB)
[2K     [90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[0m [32m13.8/13.8 MB[0m [31m77.6 MB/s[0m eta [36m0:00:00[0m00:01[0m00:01[0m
[?25hRequirement already satisfied: matplotlib in /opt/conda/lib/python3.9/site-packages (from arm-pyart) (3.8.3)
Requirement already satisfied: pandas in /opt/conda/lib/python3.9/site-packages (from arm-pyart) (2.0.3)
Requirement already satisfied: xarray!=0.21.0 in /opt/conda/lib/python3.9/site-packages (from arm-pyart) (2024.2.0)
Requirement already satisfied: pooch in /opt/conda/lib/python3.9/site-packages (from arm-pyart) (1.8.1)
Requirement already satisfied: cartopy in /opt/conda/lib/python3.9/site-packages (from arm-pyart) (0.23.0)
Requirement already satisfied: pint in /opt/conda/lib/python3.9/site-packages (from arm-pyart) (0.23)
Requirement already satisfied: s3fs in /opt/conda/lib/python3.9/site-packages (from arm-pyart) (0.4.2)
Requirement already satisfied: fsspec in /opt/conda/lib/python3.9/site-packages (from arm-pyart) (2022.3.0)
Collecting xradar>=0.5.0
  Downloading https://mirrors.ustc.edu.cn/pypi/packages/3d/50/df2ae4f0d6a12afc65b4212ae5e2ee280dadf924f24a6c9e407c5541c3b0/xradar-0.6.4-py3-none-any.whl (116 kB)
[2K     [90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[0m [32m116.9/116.9 kB[0m [31m7.0 MB/s[0m eta [36m0:00:00[0m
[?25hRequirement already satisfied: cftime in /opt/conda/lib/python3.9/site-packages (from arm-pyart) (1.6.3)
Requirement already satisfied: numpy in /opt/conda/lib/python3.9/site-packages (from arm-pyart) (1.26.4)
Collecting mda-xdrlib
  Downloading https://mirrors.ustc.edu.cn/pypi/packages/4f/4b/5fe3a00833a9f9775b3c237624a6212798167278ffe10fe0de04f58612d0/mda_xdrlib-0.2.0-py3-none-any.whl (14 kB)
Collecting netCDF4>=1.7.0
  Downloading https://mirrors.ustc.edu.cn/pypi/packages/ab/26/98e91ff4751824015f9ea7674bf7681537f1269b715bf794338b383de14f/netCDF4-1.7.1.post2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.0 MB)
[2K     [90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[0m [32m9.0/9.0 MB[0m [31m55.0 MB/s[0m eta [36m0:00:00[0m00:01[0m:00:01[0m
[?25hRequirement already satisfied: scipy in /opt/conda/lib/python3.9/site-packages (from arm-pyart) (1.11.4)
Requirement already satisfied: open-radar-data in /opt/conda/lib/python3.9/site-packages (from arm-pyart) (0.0.9)
Requirement already satisfied: certifi in /opt/conda/lib/python3.9/site-packages (from netCDF4>=1.7.0->arm-pyart) (2024.2.2)
Requirement already satisfied: packaging>=22 in /opt/conda/lib/python3.9/site-packages (from xarray!=0.21.0->arm-pyart) (23.2)
Requirement already satisfied: tzdata>=2022.1 in /opt/conda/lib/python3.9/site-packages (from pandas->arm-pyart) (2024.1)
Requirement already satisfied: python-dateutil>=2.8.2 in /opt/conda/lib/python3.9/site-packages (from pandas->arm-pyart) (2.8.2)
Requirement already satisfied: pytz>=2020.1 in /opt/conda/lib/python3.9/site-packages (from pandas->arm-pyart) (2022.1)
Requirement already satisfied: h5py>=3.0.0 in /opt/conda/lib/python3.9/site-packages (from xradar>=0.5.0->arm-pyart) (3.8.0)
Requirement already satisfied: dask in /opt/conda/lib/python3.9/site-packages (from xradar>=0.5.0->arm-pyart) (2024.2.0)
Requirement already satisfied: pyproj in /opt/conda/lib/python3.9/site-packages (from xradar>=0.5.0->arm-pyart) (3.4.1)
Requirement already satisfied: h5netcdf>=1.0.0 in /opt/conda/lib/python3.9/site-packages (from xradar>=0.5.0->arm-pyart) (1.3.0)
Requirement already satisfied: xarray-datatree>=0.0.10 in /opt/conda/lib/python3.9/site-packages (from xradar>=0.5.0->arm-pyart) (0.0.14)
Requirement already satisfied: lat-lon-parser in /opt/conda/lib/python3.9/site-packages (from xradar>=0.5.0->arm-pyart) (1.3.0)
Requirement already satisfied: xmltodict in /opt/conda/lib/python3.9/site-packages (from xradar>=0.5.0->arm-pyart) (0.13.0)
Requirement already satisfied: cmweather in /opt/conda/lib/python3.9/site-packages (from xradar>=0.5.0->arm-pyart) (0.3.2)
Requirement already satisfied: shapely>=1.7 in /opt/conda/lib/python3.9/site-packages (from cartopy->arm-pyart) (1.8.5.post1)
Requirement already satisfied: pyshp>=2.3 in /opt/conda/lib/python3.9/site-packages (from cartopy->arm-pyart) (2.3.1)
Requirement already satisfied: pillow>=8 in /opt/conda/lib/python3.9/site-packages (from matplotlib->arm-pyart) (9.4.0)
Requirement already satisfied: kiwisolver>=1.3.1 in /opt/conda/lib/python3.9/site-packages (from matplotlib->arm-pyart) (1.4.2)
Requirement already satisfied: fonttools>=4.22.0 in /opt/conda/lib/python3.9/site-packages (from matplotlib->arm-pyart) (4.33.3)
Requirement already satisfied: contourpy>=1.0.1 in /opt/conda/lib/python3.9/site-packages (from matplotlib->arm-pyart) (1.2.0)
Requirement already satisfied: importlib-resources>=3.2.0 in /opt/conda/lib/python3.9/site-packages (from matplotlib->arm-pyart) (5.7.1)
Requirement already satisfied: pyparsing>=2.3.1 in /opt/conda/lib/python3.9/site-packages (from matplotlib->arm-pyart) (3.0.9)
Requirement already satisfied: cycler>=0.10 in /opt/conda/lib/python3.9/site-packages (from matplotlib->arm-pyart) (0.11.0)
Requirement already satisfied: typing-extensions in /opt/conda/lib/python3.9/site-packages (from pint->arm-pyart) (4.7.1)
Requirement already satisfied: requests>=2.19.0 in /opt/conda/lib/python3.9/site-packages (from pooch->arm-pyart) (2.27.1)
Requirement already satisfied: platformdirs>=2.5.0 in /opt/conda/lib/python3.9/site-packages (from pooch->arm-pyart) (4.2.0)
Requirement already satisfied: botocore>=1.12.91 in /opt/conda/lib/python3.9/site-packages (from s3fs->arm-pyart) (1.34.51)
Requirement already satisfied: urllib3<1.27,>=1.25.4 in /opt/conda/lib/python3.9/site-packages (from botocore>=1.12.91->s3fs->arm-pyart) (1.26.9)
Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in /opt/conda/lib/python3.9/site-packages (from botocore>=1.12.91->s3fs->arm-pyart) (1.0.1)
Requirement already satisfied: mpi4py>=3.0.2 in /opt/conda/lib/python3.9/site-packages (from h5py>=3.0.0->xradar>=0.5.0->arm-pyart) (3.1.5)
Requirement already satisfied: zipp>=3.1.0 in /opt/conda/lib/python3.9/site-packages (from importlib-resources>=3.2.0->matplotlib->arm-pyart) (3.8.0)
Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.9/site-packages (from python-dateutil>=2.8.2->pandas->arm-pyart) (1.16.0)
Requirement already satisfied: charset-normalizer~=2.0.0 in /opt/conda/lib/python3.9/site-packages (from requests>=2.19.0->pooch->arm-pyart) (2.0.12)
Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.9/site-packages (from requests>=2.19.0->pooch->arm-pyart) (3.3)
Requirement already satisfied: partd>=1.2.0 in /opt/conda/lib/python3.9/site-packages (from dask->xradar>=0.5.0->arm-pyart) (1.2.0)
Requirement already satisfied: toolz>=0.10.0 in /opt/conda/lib/python3.9/site-packages (from dask->xradar>=0.5.0->arm-pyart) (0.12.1)
Requirement already satisfied: importlib-metadata>=4.13.0 in /opt/conda/lib/python3.9/site-packages (from dask->xradar>=0.5.0->arm-pyart) (7.0.1)
Requirement already satisfied: click>=8.1 in /opt/conda/lib/python3.9/site-packages (from dask->xradar>=0.5.0->arm-pyart) (8.1.3)
Requirement already satisfied: cloudpickle>=1.5.0 in /opt/conda/lib/python3.9/site-packages (from dask->xradar>=0.5.0->arm-pyart) (2.0.0)
Requirement already satisfied: pyyaml>=5.3.1 in /opt/conda/lib/python3.9/site-packages (from dask->xradar>=0.5.0->arm-pyart) (5.4.1)
Requirement already satisfied: locket in /opt/conda/lib/python3.9/site-packages (from partd>=1.2.0->dask->xradar>=0.5.0->arm-pyart) (1.0.0)
Installing collected packages: mda-xdrlib, netCDF4, xradar, arm-pyart
  Attempting uninstall: netCDF4
    Found existing installation: netCDF4 1.6.5
    Uninstalling netCDF4-1.6.5:
      Successfully uninstalled netCDF4-1.6.5
  Attempting uninstall: xradar
    Found existing installation: xradar 0.4.3
    Uninstalling xradar-0.4.3:
      Successfully uninstalled xradar-0.4.3
  Attempting uninstall: arm-pyart
    Found existing installation: arm_pyart 1.17.0
    Uninstalling arm_pyart-1.17.0:
      Successfully uninstalled arm_pyart-1.17.0
[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
meteva 1.8.3 requires netCDF4<=1.6.5,>=1.4.2, but you have netcdf4 1.7.1.post2 which is incompatible.[0m[31m
[0mSuccessfully installed arm-pyart-1.19.1 mda-xdrlib-0.2.0 netCDF4-1.7.1.post2 xradar-0.6.4

PY-ART

当前最流行的雷达开源库pyart在最新版本更新了cappi的函数pyart.retrieve.cappi

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import matplotlib.pyplot as plt
import pyart
from pycwr.io import read_auto
PATH='/home/mw/input/pycwr5461/Z_RADR_I_Z9898_20190828181529_O_DOR_SAD_CAP_FMT (1).bin.bz2'
PRD = read_auto(PATH)
radar = PRD.ToPyartRadar()
# Create CAPPI at 2,000 meters for the 'reflectivity' field
cappi = pyart.retrieve.create_cappi(
    radar, fields=["reflectivity"], height=3000
)

# Create RadarMapDisplay objects for both PPI and CAPPI
radar_display = pyart.graph.RadarMapDisplay(radar)
cappi_display = pyart.graph.RadarMapDisplay(cappi)

# Plotting the PPI and CAPPI for comparison
fig, ax = plt.subplots(1, 2, figsize=(13, 5))

# Plot PPI for 'reflectivity' field
radar_display.plot_ppi("reflectivity",cmap="CN_ref", vmin=-5, vmax=75, ax=ax[0])
ax[0].set_title("PPI Reflectivity")

# Plot CAPPI for 'reflectivity' field
cappi_display.plot_ppi("reflectivity",cmap="CN_ref", vmin=-5, vmax=75, ax=ax[1])
ax[1].set_title("CAPPI Reflectivity at 3000 meters")

# Show the plots
plt.show()

左图为ppi,右图为cappi

PYCWR

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import matplotlib.pyplot as plt
import numpy as np
from pycwr.draw.RadarPlot import Graph, plot_xy

# 创建一个新的图形,并设置为12列的子图布局
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 6))

# 绘制PPI图像
graph = Graph(PRD)
graph.plot_ppi(ax1, 0, "dBZ", cmap="CN_ref")  # 0代表第一层, dBZ代表反射率产品
ax1.set_title("PPI Plot", fontsize=16)
ax1.set_xlabel("Distance From Radar In East (km)", fontsize=14)
ax1.set_ylabel("Distance From Radar In North (km)", fontsize=14)

# 准备CAPPI数据
x1d = np.arange(-230000, 230001, 1000)  # x方向1km等间距, -150km~150km范围
y1d = np.arange(-230000, 230001, 1000)  # y方向1km等间距, -150km~150km范围
PRD.add_product_CAPPI_xy(XRange=x1d, YRange=y1d, level_height=3000)  # level height units:meters
grid_x, grid_y = np.meshgrid(x1d, y1d, indexing="ij")

# 绘制CAPPI图像
plot_xy(ax2, grid_x, grid_y, PRD.product.CAPPI_3000)  # 画图显示
ax2.set_title("CAPPI Plot at 2000m", fontsize=16)
ax2.set_xlabel("Distance From Radar In East (km)", fontsize=14)
ax2.set_ylabel("Distance From Radar In North (km)", fontsize=14)

# 调整布局以防止标签重叠
plt.tight_layout()
# 显示图像
plt.show()

小结

两者CAPPI插值出来的结果不太一致,真让人头大 明显看出pyart的函数应该在某个地方判断有问题,导致绘制出的cappi图像位置不合理 pycwr的计算结果明显合理多了 可能是插值算法的区别,pyart源码中使用了RectBivariateSpline插值 pycwr应该是使用了IDW插值 还是实践出真知,新出的算法还需多多复盘

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 气python风雨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Anaconda入门详解
Anaconda是一个免费开源的Python和R语言的发行版本,用于计算科学(数据科学、机器学习、大数据处理和预测分析),Anaconda致力于简化包管理和部署。Anaconda的包使用软件包管理系统Conda进行管理。超过1200万人使用Anaconda发行版本,并且Anaconda拥有超过1400个适用于Windows、Linux和MacOS的数据科学软件包。
py3study
2020/01/03
1.6K0
Win10下的 Anaconda的安装,Navigator配置虚拟环境,安装清华镜像,安装包(whl)
Python是一种面向对象的解释型计算机程序设计语言,其使用,具有跨平台的特点,可以在Linux、macOS以及Windows系统中搭建环境并使用,其编写的代码在不同平台上运行时,几乎不需要做较大的改动,使用者无不受益于它的便捷性。
学到老
2022/05/07
1.2K0
Win10下的 Anaconda的安装,Navigator配置虚拟环境,安装清华镜像,安装包(whl)
Python基础-12 虚拟环境和包
由于版本问题,我们有时需要创建不同的python环境。比如有些包只支持到python3.6,这时就需要创建一个py36的虚拟环境。推荐使用anaconda配置虚拟环境。(此外,你也可以使用venv创建虚拟环境,参加官网教程12. 虚拟环境和包 — Python 3.10.5 文档)
一只大鸽子
2022/12/06
7090
Python基础-12  虚拟环境和包
Python开发环境搭建:Anaconda + PyCharm
Python简单易用,功能强大,应用领域广泛,遍及人工智能、科学计算、机器学习、网络爬虫、大数据及云计算等。
AIFEx
2022/11/09
1.5K0
Windows Powershell 自动激活conda
windows 上安装了conda 之后,不像linux 和 Mac,这个逼要手动激活,每次我打开terminal , 都要执行一次,操 。
chuchur
2023/08/09
1.4K0
Python环境配置保姆教程(Anaconda、Jupyter、GPU环境)!
1. 写在前面 搞算法的同学也都明白,一个比较完美的python环境是多么的重要。这篇文章打算把一些必备的python环境配置过程记录下来,这样不管是新到了公司实习或者就职,还是新换了电脑,都可以借鉴这篇快速把环境搭建起来啦 😉 由于我也是重装了系统,所以算是从0开始搭建python环境,这次从anaconda安装开始, 然后到cuda的相关安装配置,再到cudnn的安装配置,然后从anaconda中建立虚拟tensorflow和pytorch的虚拟环境,再各自的虚拟环境里面安装jupyter noteb
Datawhale
2021/10/13
3.2K0
Python环境配置保姆教程(Anaconda、Jupyter、GPU环境)!
Anaconda的常用命令总结
Anaconda作为一个强大的Python发行版,具备一系列方便的命令行工具,用于管理环境、安装包等任务。本文总结了Anaconda的常用命令。这些命令的灵活使用有助于用户高效地管理Python环境,使Anaconda成为数据科学和开发领域的理想工具。Anaconda的安装简化了Python库和工具的管理,为数据科学家、工程师和研究人员提供了一个强大、集成且易于使用的开发环境。这为快速开始数据分析、科学计算和机器学习项目提供了便捷的途径。
Damon小智
2024/02/03
7720
Anaconda的常用命令总结
浅析三种Anaconda虚拟环境创建方式和第三方包的安装
在上次,如果不出意外,手把手教你进行Anaconda的安装,我们已经在windon10上成功的安装上了Anaconda。
Python进阶者
2021/01/06
13.5K0
pip和conda安装与卸载tensorflow、pycharm中使用特定的conda虚拟环境「建议收藏」
这是我写Ng的dp作业做的准备,好像需要安装特定版本的tensorflow 根据https://blog.csdn.net/ccgcccccc/article/details/89058445的配置要求来配置文件
全栈程序员站长
2022/06/25
1.6K0
pip和conda安装与卸载tensorflow、pycharm中使用特定的conda虚拟环境「建议收藏」
深度学习环境配置指南!(Windows、Mac、Ubuntu全讲解)
入门深度学习,很多人经历了从入门到放弃的心酸历程,且千军万马倒在了入门第一道关卡:环境配置问题。俗话说,环境配不对,学习两行泪。
Datawhale
2020/07/23
12.6K0
深度学习环境配置指南!(Windows、Mac、Ubuntu全讲解)
pycharm安装anaconda虚拟环境_简单编译器
可以参考docker容器,功能就相当于在你电脑中搭了一个只有单个python的虚拟机,每个环境都是独立的,因此只要不删除base环境,删除其他虚拟环境都是不影响anaconda的本体。纯净python也有创建虚拟环境的功能,但是anaconda的好处是可以指定python版本,而纯净python的虚拟环境依赖python安装时的环境。
全栈程序员站长
2022/09/27
7280
pycharm安装anaconda虚拟环境_简单编译器
Anaconda使用命令
参考的地址:https://zhuanlan.zhihu.com/p/32925500
梅花
2020/09/28
1.8K0
conda创建虚拟环境怎么删除(anaconda离线创建虚拟环境)
在Anaconda中conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。所以对虚拟环境进行创建、删除等操作需要使用conda命令。
全栈程序员站长
2022/07/31
4.4K0
动手学DL——环境部署随笔【深度学习】【Anaconda】【CUDA】【PyTorch】【jupyter】
anaconda 2022.10 windows 版本,https://repo.anaconda.com/archive/
来杯Sherry
2023/07/09
5400
动手学DL——环境部署随笔【深度学习】【Anaconda】【CUDA】【PyTorch】【jupyter】
Python 安装包setuptools
Python安装包的命令有的easy_install, setuptools, 也有pip,distribute
py3study
2020/01/08
3.5K0
conda管理Anaconda环境
Anaconda也自带一个包管理工具conda,并具有自己的包仓库和服务器。下面简单介绍一下conda:
KEVINGUO_CN
2020/03/16
1.5K0
pycharm怎么配置python环境anaconda_编译环境是什么
Miniconda是Anaconda的压缩版,Miniconda只包含conda的核心内容,Anaconda中包含了Spyder集成开发环境等扩充内容。Miniconda的功能足矣。
全栈程序员站长
2022/09/26
1K0
pycharm怎么配置python环境anaconda_编译环境是什么
如何使用 conda 创建 python 虚拟环境
conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理和环境管理。包管理与pip的使用方法类似,环境管理则是允许用户方便滴安装不同版本的python环境并在不同环境之间快速地切换。
BUG弄潮儿
2023/09/02
15.4K0
如何使用 conda 创建 python 虚拟环境
Jupyter Notebook中配置多版本Python
最新 Anaconda 中,默认安装 Python 3.8.3,因为某些原因需要使用 Python 3.7
yiyun
2022/04/01
4.8K0
Jupyter Notebook中配置多版本Python
Python虚拟环境(pipenv、venv、conda一网打尽)[通俗易懂]
要搞清楚什么是虚拟环境,首先要清楚Python的环境指的是什么。当我们在执行python test.py时,思考如下问题:
全栈程序员站长
2022/09/27
43.2K0
Python虚拟环境(pipenv、venv、conda一网打尽)[通俗易懂]
推荐阅读
相关推荐
Anaconda入门详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验