博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python批量处理气象站点降雨数据1——处理成正确的降水索引数据
阅读量:7009 次
发布时间:2019-06-28

本文共 2265 字,大约阅读时间需要 7 分钟。

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_dict17 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.2530 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:down37     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-201601.csv'53 54     a=pd.read_csv(filename,header=list(range(6)))55     header=a.columns.values56     header_dict=header_to_dict(header)57     '''['NCOLS', 'NROWS', 'XLLCORNER', 'YLLCORNER', 'CELLSIZE', 'NODATA_VALUE']'''58     a=a.values59     a=txt_to_array(a)60     csv_write(out_path,a,header_dict)

 

转载于:https://www.cnblogs.com/xzxgiser/p/10433550.html

你可能感兴趣的文章
开源 |蚂蚁金服启动分布式中间件开源计划,用于快速构建金融级云原生架构...
查看>>
Go语言之基准测试
查看>>
win10_x64更新错误解决: 安装一些更新时出现问题,但我们稍后会重试。如果持续出现这些问题,并且你想要搜索Web或联系支持人员以获取相关信息,以下信息可能会对你有帮助:...
查看>>
Ubuntu下编译安装OpenCV 2.4.7并读取摄像头[转]
查看>>
CentOS6.5升级内核至4.X
查看>>
linux 调整最大文件打开数
查看>>
nginx防盗链设置
查看>>
linux中用eclipse 新建maven project,pom.xml中报Missing artifact jdk.tools:jdk.tools:jar:1.7
查看>>
31. Python redis的字符串操作 list操作 set操作
查看>>
keepalived vrrp_script的一些实例配置
查看>>
初学Node.js之Markdown建站
查看>>
《数字逻辑设计与计算机组成》一 3.4 减法器
查看>>
Chrome浏览器也开启Material Design风格
查看>>
《系统分析与设计方法及实践》一2.1 软件生命周期
查看>>
Oracle Logminer 日志挖掘
查看>>
印媒:全球科技巨头竞相角逐印度“智能城市”项目
查看>>
《Servlet和JSP学习指南》一2.2 隐藏域
查看>>
[干货]基础机器学习算法
查看>>
vsphere 克隆安装虚拟机
查看>>
svn服务器迁移
查看>>