python批量处理气象站点降雨数据1——处理成正确的降水索引数据

Posted 肖祖儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python批量处理气象站点降雨数据1——处理成正确的降水索引数据相关的知识,希望对你有一定的参考价值。

1、原始数据如图

2、将原始的气象站点数据按照地理研究区域提取出来。如图:

 

3、利用python程序进行处理,代码如下:

4、运行得到结果如下图

5、说明:

此步骤是将带有缺省值的原始降水数据处理成带有行列号、坐标和降水值的csv格式数据,方便后期进行降水数据的分析与使用。代码部分为开头声明的作者,使用者需声明版权。

 具体代码如下:

 1 import numpy
 2 import csv
 3 import pandas as pd
 4 import numpy as np
 5 
 6 
 7 def txt_to_array(values):
 8     return np.array([[i for i in filter(None,data[0].split(\' \'))] for data in values])
 9 def header_to_dict(header):
10     header=header[0]
11     header=np.array([[i for i in filter(None,data.split(\' \'))] for data in header])
12 
13     header_dict={}
14     for key,values in header:
15         header_dict[str(key)]=eval(values)
16     return header_dict
17 def index_to_coor(row,col,x_start,y_start,cell_size):
18     \'\'\'[summary]
19     
20     [description]
21     
22     Arguments:
23         row {[type]} -- [行号]
24         col {[type]} -- [列号]
25         x_start {[type]} -- [左上角x]
26         y_start {[type]} -- [左上角y]
27         cell_size {[type]} -- [网格size]
28     \'\'\'
29     return x_start+col*cell_size+0.25,y_start-row*cell_size+0.25
30 
31 def csv_write(path,data,header_dict):
32     df=open(path,\'w\',newline=\'\')
33     csv_writer=csv.writer(df)
34     header=[\'row\',\'col\',\'x\',\'y\',\'values\']
35     csv_writer.writerow(header)
36     #l:left,u:up,r:right,d:down
37     x_l_u_start=header_dict["XLLCORNER"]
38     y_l_u_start=header_dict[\'YLLCORNER\']+(header_dict[\'NROWS\']-1)*header_dict[\'CELLSIZE\']
39     for row in range(int(header_dict[\'NROWS\'])):
40         for col in range(int(header_dict[\'NCOLS\'])):
41             x,y=index_to_coor(row,col,x_l_u_start,y_l_u_start,header_dict[\'CELLSIZE\'])
42             csv_writer.writerow([row,col,x,y,data[row,col]])
43     df.close()
44 
45 
46 if __name__=="__main__":
47     #路径名必须是英文的
48     #只需要改这两个文件,其他不需要改
49     #filename选择任意一个降雨txt数据
50     filename=r\'E:\\rainfull\\data\\SURF_CLI_CHN_PRE_MON_GRID_0.5-196101.txt\'
51     #导出生成每行一个各网点数据,经纬度,行列编号等
52     out_path=r\'E:\\rainfull\\SURF_CLI_CHN_PRE_MON_GRID_0.5-196101.csv\'
53 
54     a=pd.read_csv(filename,header=list(range(6)))
55     header=a.columns.values
56     header_dict=header_to_dict(header)
57     \'\'\'[\'NCOLS\', \'NROWS\', \'XLLCORNER\', \'YLLCORNER\', \'CELLSIZE\', \'NODATA_VALUE\']\'\'\'
58     a=a.values
59     a=txt_to_array(a)
60     csv_write(out_path,a,header_dict)

 

以上是关于python批量处理气象站点降雨数据1——处理成正确的降水索引数据的主要内容,如果未能解决你的问题,请参考以下文章

python+pandas气象数据处理

Python气象数据处理与绘图(1):数据读取

R语言批量处理TRMM降雨数据

Python气象数据处理与绘图(2):常用数据计算方法

Python气象数据处理与绘图(18):泰勒图

Python气象数据处理与绘图(4):显著性检验