日记(站点到网格)

import pandas as pd
import numpy as np
#读取文本文件,以空格作为分隔,给数据六个列名,对于数值为-99.90付为缺省值nan
f = pd.read_csv('文件',sep='\s+',names=['sta','lat','lon','alt','year','tm'],na_values=-99.90)
#取出其中2006年的数据
data = f.loc[f.year==2006]
#如果一行中有nan值,删除这一行
data = data.dropna(axis=0,how='any')
#提取纬度、经度和平均温度
lat = data.lat.values/100
lon = data.lon.values/100
tm = data.tm.values
sta = data.sta.values
#使用agg函数查看数据的min 和 max,了解数据的大致信息
print(data.agg(['min', 'max']))

Cressman插值(需要安装metpy库)

Cressman插值法是一种反距离权重插值法,它使用网格点与在一定范围内所有站点的距离反比作为权重,并以此计算网格点值的插值模型。

from metpy.interpolate import inverse_distance_to_grid
#根据前面的经纬度的最大和最小值,定义两个等差序列的数组
lon_grid = np.arange(75.0, 134.0, 1.0) 
lat_grid = np.arange(16.0, 54.0, 1.0) 
#使用两个数组,编织一个网格
lon_gridmesh, lat_gridmesh = np.meshgrid(lon_grid, lat_grid)

tm_grid = inverse_distance_to_grid(lon,lat,tm,lon_gridmesh,lat_gridmesh,r=15,min_neighbors=3)

 

posted @ 2022-08-31 18:28  EROEG  阅读(390)  评论(0编辑  收藏  举报