- 积分
- 1507
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-4-12
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 黄小仙儿 于 2022-1-25 16:41 编辑
用站点数据插值后画雨量分布图,出现警告:
d:\anaconda3\lib\site-packages\scipy\interpolate\rbf.py:257: LinAlgWarning: Ill-conditioned matrix (rcond=1.20757e-21): result may not be accurate. self.nodes = linalg.solve(self.A, self.di)
把插值后的grid输出了一下
[[ 0. 0. 0. ... 8833.41735458 2553.85585213 0. ]
[ 0. 0. 0. ... 5394.71074963 10134.48536777 0. ]
[ 0. 0. 0. ... 7731.83825588 11421.4927206 0. ] ... [ 872.55770493 9633.00927353 2759.9814167 ... 0. 0. 0. ]
[ 2794.32398796 0. 0. ... 0. 0. 0. ]
[ 2810.32857895 0. 0. ... 0. 0. 0. ]]
出来的图也不对。
查找了半天也不知道问出在哪里,我把脚本贴出来请大家帮我检查一下,感谢!
proj= ccrs.PlateCarree() # 简写投影
plt.rcParams['font.sans-serif']=['SimHei'] #显示中文
fig=plt.figure(figsize=(4,2),dpi=500)#添加画布
ax = fig.subplots(1, 1, subplot_kw={'projection': proj}) # 创建子图
extent=[107.5,110.0,33.5,34.8]#限定绘图范围
#隐藏边框线
#plt.axis('off')
lon=df['经度']#读取站点经度
lat=df['纬度']#读取站点纬度
tem=df['小时降水量']#读取站点气温
olon=np.linspace(107.5,110.0,80)#设置网格经度
olat=np.linspace(33.5,34.8,80)#设置网格纬度
olon,olat=np.meshgrid(olon,olat)#网格化
func=Rbf(lon,lat,tem,function='linear')#定义径向基函数插值
tem_new=func(olon,olat)#获得插值后的网格气温
tem_new[tem_new <0 ] = 0
print(tem_new)
clevs = [0.1,10,25,50,100,250,500]
cdict = ['#A9F090','#40B73F','#63B7FF','#0000FE','#FF00FC','#850042']
my_cmap = colors.ListedColormap(cdict)
norm = mpl.colors.BoundaryNorm(clevs,my_cmap.N)
shp_path=r'D:\shp\bb.shp'
a_shapes=list(Reader(shp_path).geometries())
reader = Reader(shp_path)
enshicity = cfeat.ShapelyFeature(reader.geometries(), proj, edgecolor='k', facecolor='none')
ax.set_extent(extent, crs=proj)
contour = plt.contourf(olon,olat, tem_new,clevs,transform = ccrs.PlateCarree(),cmap=my_cmap,norm = norm)
|
|