- 积分
- 9253
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2019-7-29
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 雨落森林 于 2021-6-27 22:18 编辑
格点数据要如何插值到站点呢?其实格点也可以视作特殊的站点hhh,用scipy插值可以解决问题。不废话,直接上代码。而且自己手动弄了个网格和站点数据试了一下,还是线性插值的效果最好,三次样条也有自己的优点,但是最邻近嘛,简直是扯淡,直接把最近的网格数据当作是台站的数据,实战不推荐使用。
import scipy.interpolate as inter
import numpy as np
import matplotlib.pyplot as plt
if __name__=='__main__':
#将格点数据重组成站点
x1, y1 = np.meshgrid(np.array([100,112,124]), np.array([20,26,32]))
d1 = np.array([[2,6,5],[1,5,9],[3,1,4]])
x1.shape, y1.shape, d1.shape = -1, -1, -1
points = np.array([x1,y1]).T
#输出站点样子的数据
print(points,'\n\n',d1,'\n\n')
#创建未知站点的经纬度
x2, y2 = np.array([115,118,104,108]),np.array([23,28,28,30])
lonlat = np.array([x2,y2]).T
#插值开始
d2_linear = inter.griddata(points,d1,lonlat,method='linear')
d2_cubic = inter.griddata(points,d1,lonlat,method='cubic')
d2_nearest = inter.griddata(points,d1,lonlat,method='nearest')
#输出结果
print(d2_linear)
print(d2_cubic)
print(d2_nearest)
输出的结果:
[[100 20]
[112 20]
[124 20]
[100 26]
[112 26]
[124 26]
[100 32]
[112 32]
[124 32]]
[2 6 5 1 5 9 3 1 4]
[6.5 5.66666667 1. 1. ]
[6.44613496 5.78539326 1.82347396 1.73989982]
[6 5 1 1]
|
-
评分
-
查看全部评分
|