【问题标题】:Gridding irregular scatter data on basemap, trying different resolutions在底图上网格化不规则散点数据,尝试不同的分辨率
【发布时间】:2020-06-04 17:08:05
【问题描述】:

我正在尝试在特定大小的网格内重新网格化/插值,我的不规则分散位置(经纬度)绑定变量值的数据集。我的数据可用作数据框,其中的列分别标记变量、纬度和经度的值。

我必须首先对这些数据进行网格化,通过优化网格大小,然后找到对网格框内不同数量的点进行平均的最佳方法。

我已经按照在线示例尝试了代码。我使用 histogram2d 函数来网格化纬度和经度。我用密度计数(等于网格内所有点的平均值)填充具有散点的网格框。 (然后,我将不得不使用这个由散点生成的新网格数据来与另一个具有不同网格分辨率的数据集进行比较)。

理想情况下它应该可以正常工作,但是没有散点的网格框会被填充,而那些有散点的网格框会被排除在外。在更精细的分辨率或更小的 bin 大小中,这种不匹配会更大。

我查看了这些示例 - example 1example 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


    【解决方案1】:

    一位朋友帮我解决了这个问题。

    在绘制 pcolormesh 绘图时必须转置从直方图生成的数组矩阵:

    cs=m.pcolormesh(p, q, zi.T, edgecolors='black',cmap = 'jet')
    

    【讨论】:

      猜你喜欢
      • 2016-09-10
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-21
      相关资源
      最近更新 更多