- 积分
- 338
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-10-19
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 hut171 于 2019-4-12 15:31 编辑
本人试过Python scipy.interpolate中各个插值方法,最后发现RBF方法还算差强人意,但是仍然存在一点问题
首先读取的txt文件格式为每一行“经度,纬度,降水”
当行数在386行(包括386行)以内的时候,可以正常做出落区图
当超过386行后,就成花图了。
请教坛里大神帮忙看下什么原因,怎么能够调好,毕竟区域站超过386个还是很正常的
- import numpy as np
- import matplotlib.pyplot as plt
- from scipy.interpolate import Rbf
- from mpl_toolkits.basemap import Basemap
- def leves_colors(): # 设置色标方法2
- levels = [0, 0.000000001, 1.5, 7, 15, 40, 50]
- colors = ['#FFFFFF', '#A6F28F', '#3DBA3D', '#61B8FF', '#0000E1', '#FA00FA', '#800040']
- return levels, colors
- filename = r'E:\qls\2019022604.txt'
- file = np.loadtxt(filename, delimiter=',', dtype='str')
- # lon = file[:, 0].astype(np.float).reshape(-1, 1)
- lon = file[:, 0].astype(np.float)
- lat = file[:, 1].astype(np.float)
- rain = file[:, 2].astype(np.float)
- result = np.ma.masked_greater(rain, 999989)
- olon = np.linspace(104, 112, 300)
- olat = np.linspace(31, 40, 300)
- olon, olat = np.meshgrid(olon, olat)
- func = Rbf(lon, lat, result, function='linear')
- rain_data_new = func(olon, olat)
- fig = plt.figure(figsize=(8, 8))
- ax = fig.add_subplot(111)
- m = Basemap(llcrnrlon=105, llcrnrlat=31, urcrnrlon=112, urcrnrlat=40, projection='cyl')
- m.readshapefile('./Map/Shaanxi/Shaanxi_province', 'Shaanxi', default_encoding='utf-8')
- xx, yy = m(olon, olat)
- levels, colors = leves_colors()
- c = m.contourf(xx, yy, rain_data_new, levels=levels, colors=colors, extend='max')
- m.colorbar(c)
- plt.show()
- plt.close()
复制代码
数据文件示例,调试时可以在后面复制这些数据108.88,34.08,3.9
108.87,34.17,3.5
108.95,34.14,3.2
108.1,34.09,2.1
108.07,34.13,2.1
108.32,34.07,2.1
108.04,34.14,2
108.73,34.17,2
108.19,34.05,1.9
108.02,33.61,1.8
108.41,33.99,1.8
108.17,34.08,1.7
108.89,34.2,1.7
附件传错了,不知道怎么删除,大家千万不要下载,浪费金币
|
|