爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 11936|回复: 9

[源代码] 使用python提取国家气象中心提供的日降水站点资料

[复制链接]

新浪微博达人勋

发表于 2022-4-15 22:29:46 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
使用python提取国家气象中心提供的日降水站点资料,并将其处理为月平均降水资料,在数据处理过程中有以下注意事项:
  • 要先把使用到的降水资料文件放在一个空文件夹中
  • 注意国家气象中心提供的降水资料的数据格式
  • 月平均降水资料是每日降水总量之和,不用除以天数
    1. import numpy as np
    2. from os.path import join
    3. from os import listdir

    4. root = r'E:\pre' #原始资料存放的文件夹
    5. for name in listdir(root):
    6.     filename = join(root,name)
    7.     with open(filename) as fp:
    8.         line = fp.readlines()
    9.         data = [item.strip().split() for item in line]
    10.         data = list(data)
    11.         data = np.array(data,dtype = int)
    12.     fp.close()
    13.    
    14.     if data[0,4] < 1979:
    15.         continue
    16.     root1 = r'E:\pre' #读取原始数据后按站点存放数据的文件夹
    17.     name0 = '1234'
    18.     xave = 0 #月平均降水量
    19.     for i in range(len(data)): #遍历列表的每一行
    20.         name1 = str(data[i,0]) #站点编号赋值给name1
    21.         #处理降水数据
    22.         if data[i,12] != 0:
    23.             data[i,9] = 0.0
    24.         if data[i,9] >= 32000:
    25.             if data[i,9] == 32700:
    26.                 data[i,9] = 0.0
    27.             else:
    28.                 data[i,9] = data[i,9] - 32000
    29.         elif data[i,9] >= 31000:
    30.             data[i,9] = data[i,9] - 31000
    31.         elif data[i,9] >=30000:
    32.             data[i,9] = data[i,9] - 30000
    33.                     
    34.         if name1 != name0: #若该编号与上一个不同说明读取的是下一个站点的数据
    35.             if i > 0 : #从第二个站点开始写入上一个站点的月平均数据
    36.                 name0 = name0+'.dat'
    37.                 filename1 = join(root1,name0)
    38.                 with open(filename1,'a') as fp1: #打开储存新站点的文件
    39.                     data_str = str(data[i,4]) + ' '  + str(data[i,5])\
    40.                         + ' ' + str(xave) + '\n'
    41.                     fp1.write(data_str)
    42.                 fp1.close()
    43.             name0 = name1
    44.             xave = 0 #平均数归零
    45.         xave = xave + data[i,9]
    复制代码
    详情也可见:https://blog.csdn.net/qq_47672397/article/details/124149949?spm=1001.2014.3001.5501

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2022-4-16 10:25:18 | 显示全部楼层
学习了。楼主厉害。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-4-16 12:23:25 | 显示全部楼层
留名学习,学习!!!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-4-17 12:05:24 | 显示全部楼层
嘿嘿,大家一起学习,但是这个程序其实有一点问题,就是按我的想法是它在打开下一个文件的时候才会写入上一个文件的最后一个站点的信息,所以最开始在循环写入结束后加了一句用来写最后一个站点信息的语句,但是后来发现最后一个站点的数据被我写了两次,然后删了那句就正常了,但是一直不理解,所以想请教下大佬们我是哪里想错了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-4-22 08:56:53 | 显示全部楼层
多好的资源,必须顶下
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-7-12 17:11:24 | 显示全部楼层
请问您用的降水数据的时间范围是什么?在国家气象中心没能搜到1951-2020的逐日数据,能告知在哪里可以下载吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-7-14 17:39:44 | 显示全部楼层
guo066600 发表于 2022-7-12 17:11
请问您用的降水数据的时间范围是什么?在国家气象中心没能搜到1951-2020的逐日数据,能告知在哪里可以下载 ...

抱歉啊,我也不知道在哪里下载,我的数据是我的老师给我的
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-7-28 17:15:41 | 显示全部楼层
感谢分享,很有帮助
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-8-3 17:08:30 | 显示全部楼层
学习了。楼主好厉害。请问一下国家气象中心提供的日降水站点资料的时间是北京时间还是世界时间?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-8-5 20:09:03 | 显示全部楼层
a1s2d3 发表于 2022-4-17 12:05
嘿嘿,大家一起学习,但是这个程序其实有一点问题,就是按我的想法是它在打开下一个文件的时候才会写入上一 ...

求问一下,在国家气象中心下得过去三小时降水量比如是18点的,那它实际是18点到24点还是15点到18点的呢?像图片之中的情况我想计算7月29号的降水量我是要把7月29号从0点加到21点,还是从7月29号的3点开始加到7月30号的0点?有没有大佬给指导一下,感谢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表