【发布时间】:2020-06-04 17:08:05
【问题描述】:
我正在尝试在特定大小的网格内重新网格化/插值,我的不规则分散位置(经纬度)绑定变量值的数据集。我的数据可用作数据框,其中的列分别标记变量、纬度和经度的值。
我必须首先对这些数据进行网格化,通过优化网格大小,然后找到对网格框内不同数量的点进行平均的最佳方法。
我已经按照在线示例尝试了代码。我使用 histogram2d 函数来网格化纬度和经度。我用密度计数(等于网格内所有点的平均值)填充具有散点的网格框。 (然后,我将不得不使用这个由散点生成的新网格数据来与另一个具有不同网格分辨率的数据集进行比较)。
理想情况下它应该可以正常工作,但是没有散点的网格框会被填充,而那些有散点的网格框会被排除在外。在更精细的分辨率或更小的 bin 大小中,这种不匹配会更大。
我查看了这些示例 - example 1、example 2。
这是我的代码的一部分:
df #Dataframe as a csv file opened in pandas
y = df['lon']
x = df['lat']
z = df['var']
# Bin the data onto a 10x10 grid or into any other size
# Have to reverse x & y due to row-first indexing
zi, yi, xi = np.histogram2d(y, x, bins=(5,5), weights=z, normed=False)
counts, _, _ = np.histogram2d(y, x, bins=(5,5))
zi = zi / counts
zi = np.ma.masked_invalid(zi)
m = Basemap(llcrnrlat=45,urcrnrlat=55,llcrnrlon=25,urcrnrlon=30)
m.drawcoastlines(linewidth =0.75, color ="black")
m.drawcountries(linewidth =0.75, color ="black")
m.drawmapboundary()
p,q = m(yi,xi)
#cs=m.pcolormesh(xi, yi, zi, edgecolors='black',cmap = 'jet')
cs=m.pcolormesh(p, q, zi, edgecolors='black',cmap = 'jet')
m.colorbar(cs)
#scat = m.scatter(x,y, c=z, s=200,edgecolors='red')
scat=m.scatter(y,x, latlon=True,c=z, s =80)
以下是生成的图像。
任何帮助将不胜感激。
【问题讨论】:
标签: python grid matplotlib-basemap spatial-interpolation