python对气象工作有没有用_Python语言在气象资料下载中的应用

摘 要

随着气象部门对数据传输时效要求不断提升,以及业务系统平台的不断扩展,对通过地面链路下载资料

的要求越来越高。本文主要利用

Python

语言中的

ftp

模块以及

Threading

模块实现气象资料的下载,

通过

ftp

模块实现资料的稳定下载以及

Threading

模块使用后的带宽充分利用,结合气象资料的特点提

出资料下载的方案,实现业务化应用,有效提升资料下载速度,加强气象资料的时效性。

关键词

Python;ftp

下载;多进程;多线程

doi:10.3969/j.issn.1672-9528.2019.01.008

* 赤峰市气象局 内蒙古赤峰 024000

0

引言

随着现代气象科技与大气探测技术的不断发展,气象资

料的数量、质量和应用水平等逐渐成为了国家气象业务和科

研水平的重要核心竞争力。气象资料收集的完整性、数据质

量的可靠性、数据产品的丰富性和良好的时效性等成为了发

达国家气象业务发展水平领先的关键环节之一,也是当前各

个国家气象部门气象资料业务与数据产品研发的发展方向。

天气预报和气候模式的发展和资料同化应用能力的提高

对观测资料的精度、时效提出越来越高的需求,相应的通过

地面链路下载资料的稳定性以及时效性要求就越来越高,频

次高、分辨率高的卫星资料以及数值预报产品等气象资料的

文件数量多、文件大以及文件生成时间集中等特点,更是对

下载过程的稳定以及高效提出了很高的要求。因此,业务化

应用的下载脚本,应该既能实现资料的稳定下载、更新下载,

又能实现充分利用带宽的多进程或者多线程下载。

1 Python

简介

Python

是一个高层次的结合了解释性、编译性、互动性

和面向对象的脚本语言。Python 的设计具有很强的可读性,

相比其他语言经常使用英文关键字,其他语言的一些标点符

号,它具有比其他语言更有特色语法结构。

Python

是一种解释型语言,在开发过程中没有了编译这

个环节。Python 是交互式语言,可以在一个

Python

提示符,

直接互动执行写你的程序。Python 也是面向对象语言,支持

面向对象的风格或代码封装在对象的编程技术。即使系统的

运行环境发生变化,

只需要把你的

Python

程序拷贝到另外一

WINDOWS

或者

LINUX

服务器上,它就可以工作了,这也使

Python

程序更加易于移植。

1.1 ftp

模块简介

Python

编程中使用

ftplib

模块的

FTP

对象,可以进行

方便的实现

FTP

客户端功能,可以轻松实现

FTP

的上传,下

载等操作。FTP

的工作流程及基本操作可参考协议

RFC959,

该协议规范通过设计简单易实现的协议来试图满足大型机、

小型机、个人工作站、TAC

等用户的需要。

1.2 Threading

模块简介

多进程与多线程都可用于实现并发。线程是程序执行的

最小单位,而进程是操作系统分配资源的最小单位,线程是

进程中的一部分,进程可包含多个线程在运行。由于线程比

进程更小,基本上不拥有系统资源,故对它的调度所付出的

开销就会小得多,能更高效的提高系统内多个程序间并发执

行的程度。

Python

中引入

Threading

模块用于提供线程相关的操作,

使线程并发运行并共享内存。模块中目标函数可以实例化一

Thread

对象,每一个

Thread

对象代表一个线程,通过模

块提供的函数对线程进行调度以及控制,线程高效运行的同

时,保证线程通信的安全性。

2 下载脚本设计

2.1

气象资料特点分析

通过地面链路下载的气象资料,以日本葵花

8

卫星资料

为例:日本葵花

-8

卫星有

16

个通道,是目前

MTSAT

系列卫

星的

3

倍,常规观测频次为

10

分钟,通过宽带网向国家级、

省级用户提供相关资料分发和下载服务,每日数据量百

G

右。其中葵花标准数据的圆盘图资料分

10

段提供,每

10

钟文件数量共

160

个,在网络行为管理设备的控制,带宽仍

有大部分闲余的情况下,单进程单线程无法及时的将每频次

的资料下载完成,对于资料均为大文件的数据更是难以在有

效时段内完成,而使用多进程或者多线程同时下载数个文件,

可有效提升带宽利用率,加快下载速度。

2.2 脚本编写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
距平垂线是气象常用的一种线型,用于表示某个值与长期平均值之间的差异。下面是一个简单的 Python 气象绘图教程,演示了如何画出距平垂线。 首先,我们需要准备一些数据。在这个例子,我们使用了一个包含每个月的平均气温的列表。 ```python import matplotlib.pyplot as plt # 平均气温数据 avg_temps = [4.1, 5.4, 8.9, 12.3, 16.5, 20.2, 22.7, 22.5, 19.7, 15.5, 10.1, 5.7] # 长期平均气温 long_term_avg = sum(avg_temps) / len(avg_temps) ``` 接下来,我们使用 Matplotlib 库来画出气象图。首先,我们创建一个新的图形并设置图形的大小和标题。 ```python # 创建新的图形 fig = plt.figure(figsize=(10, 6)) fig.suptitle('Monthly Average Temperatures', fontsize=16) ``` 接下来,我们创建一个子图,用于画出距平垂线。我们将距平垂线画在纵轴上,横轴表示每个月份。 ```python # 创建子图 ax = fig.add_subplot(111) # 设置横轴和纵轴的标签 ax.set_xlabel('Month') ax.set_ylabel('Temperature (°C)') # 画出距平垂线 for i, temp in enumerate(avg_temps): ax.plot([i+1, i+1], [temp-long_term_avg, 0], 'k-', linewidth=2) ``` 最后,我们显示图形。 ```python # 显示图形 plt.show() ``` 完整的代码如下: ```python import matplotlib.pyplot as plt # 平均气温数据 avg_temps = [4.1, 5.4, 8.9, 12.3, 16.5, 20.2, 22.7, 22.5, 19.7, 15.5, 10.1, 5.7] # 长期平均气温 long_term_avg = sum(avg_temps) / len(avg_temps) # 创建新的图形 fig = plt.figure(figsize=(10, 6)) fig.suptitle('Monthly Average Temperatures', fontsize=16) # 创建子图 ax = fig.add_subplot(111) # 设置横轴和纵轴的标签 ax.set_xlabel('Month') ax.set_ylabel('Temperature (°C)') # 画出距平垂线 for i, temp in enumerate(avg_temps): ax.plot([i+1, i+1], [temp-long_term_avg, 0], 'k-', linewidth=2) # 显示图形 plt.show() ``` 运行代码后,我们就可以看到画出的距平垂线气象图了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值