使用ecCodes读取BUFR格式。

pdbufr的Python项目详细描述


使用eccode的BUFR格式的Pandas阅读器。在

具有开发状态的功能Alpha

  • 从BUFR文件中提取观察结果作为Pandas数据帧
  • 读取包含未压缩和压缩子集的BUFR 3和4文件
  • 支持所有现代版本的python3.9、3.8、3.7、3.6和PyPy3
  • 在Linux、MacOS和Windows上运行时,ecCodes C库是唯一的二进制依赖项。在

限制:

  • 没有对nodata值进行特殊处理(还没有)
  • 没有康达锻造包(还没有)
  • 过滤器只匹配精确的值。在

安装

安装pdbufr依赖项的最简单方法是通过Conda:

$ conda install -c conda-forge python-eccodes pandas

以及pdbufr本身作为PyPI的Python包,其中:

^{pr2}$

系统依赖性

Python模块依赖于ECMWFecCodes库 必须安装在系统上并作为共享库访问。 一些Linux发行版提供了一个二进制版本,可以与标准包管理器一起安装。 在Ubuntu 18.04上,使用命令:

$ sudo apt-get install libeccodes0

在带有自制程序的MacOS上使用:

$ brew install eccodes

作为一种选择,您可以安装官方的源代码发行版 按照 https://software.ecmwf.int/wiki/display/ECC/ecCodes+installation

您可以运行一个简单的selfcheck命令来确保您的系统设置正确:

$ python -m pdbufr selfcheck
Found: ecCodes v2.19.0.
Your system is ready.

使用

首先,您需要一个格式良好的BUFR文件,如果您手头没有,可以下载 sample file

$ wget http://download.ecmwf.int/test-data/metview/gallery/temp.bufr

您可以使用ecCodes命令行工具bufr_lsbufr_dump到 了解结构和键/值,可用于选择您的观测值 对…感兴趣。在

pdbufr.read_bufr函数返回一个带有请求列的pandas.DataDrame。 它接受BUFR消息头上的查询过滤器 这是非常快的和查询过滤器上的观察键。 筛选器与精确值匹配或与列表中的某个值匹配,并且所有筛选器都必须匹配:

>>>importpdbufr>>>df_all=pdbufr.read_bufr('temp.bufr',columns=('stationNumber','latitude','longitude'))>>>df_all.head()stationNumberlatitudelongitude090758.47-78.08182353.75-73.6729-90.000.00348618.43-69.88416521.98-159.33>>>df_one=pdbufr.read_bufr(...'temp.bufr',...columns=('stationNumber','latitude','longitude'),...filters={'stationNumber':907},...)>>>df_one.head()stationNumberlatitudelongitude090758.47-78.08>>>df_two=pdbufr.read_bufr(...'temp.bufr',...columns=('stationNumber','data_datetime','pressure','airTemperature'),...filters={'stationNumber':[823,9]},...)>>>df_two.head()stationNumberpressureairTemperaturedata_datetime0823100000.0NaN2008-12-0812:00:00182397400.0256.72008-12-0812:00:00282393700.0255.12008-12-0812:00:00382392500.0255.32008-12-0812:00:00482390600.0256.72008-12-0812:00:00>>>df_two.tail()stationNumberpressureairTemperaturedata_datetime19092990.0NaN2008-12-0812:00:0019192790.0206.32008-12-0812:00:0019292170.0NaN2008-12-0812:00:0019392000.0203.12008-12-0812:00:0019491390.0197.92008-12-0812:00:00

贡献

主存储库托管在GitHub上, 测试、错误报告和贡献受到高度欢迎和赞赏:

https://github.com/ecmwf/pdbufr

请看贡献.rst提供帮助的最佳方式。在

主要开发人员:

主要贡献者:

{a8参与该项目的人员名单。在

许可证

2019年欧洲中期天气预报中心(ECMWF)版权所有。在

根据Apache许可证2.0版(“许可证”)授权; 除非符合许可证,否则您不能使用此文件。 您可以在:http://www.apache.org/licenses/LICENSE-2.0获取许可证副本。 除非适用法律要求或书面同意 根据许可证分发的是“按原样”分发的, 没有任何明示或暗示的保证或条件。 有关管理权限和的特定语言,请参阅许可证 根据许可证的限制。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javasocket:BufferedOutputStream还是just OutputStream?   java确保BlockedQueue中的容量   java异常多部分/formdata请求失败。读取超时   java奇怪的日期字符串格式   java为什么线程池中的所有线程都不处理我的排队任务?   java如何从字符串列表/Url设置为墙纸   实现内联接口时java ClassNotFoundException   java打开一个socket需要多少cpu   java窗口/linux路径组件   使用十六进制值作为方法参数时的java NullPointerException   java如何使此内容可用于“另存为”?   java Android onTouchListener,更容易实现   ProgressDialog 安卓 studio的java模糊背景   运行TestNG时发生java错误无法通过查找找到应用程序名称   java指定JVM Eclipse Mac OS X   用于TracePoint2D的java jChart2D颜色   使用管理员权限启动独立服务器时,java客户端转换失败   处理Java时出错:不检查方法调用中的不可能状态   java在没有浏览器的服务器上打印html文件