在底图上绘制 netCDF4 数据

Plotting netCDF4 data on Basemap

我有一个包含 3 列的 csv 文件(经度纬度降水量)和 90 行,我需要将其绘制为 Python 中的地图。我没有 time 索引,只有与坐标关联的值。我遵循了这个程序:

  1. 将 .cvs 转换为 .nc(netCDF 文件)
  2. Plot .nc thought Basemap + Matplotlib

第二步出现如下错误:

ValueError: need more than 1 value to unpack

这似乎符合代码 c_scheme = mp.pcolor(x,y,avp[:], cmap = 'jet') 的要求,尤其是 avp[:]。当我 运行 avp.shape 我得到它的形状为 (90L,) 并且 avp.ndim 显示值为 1.

我的问题是:“avp”中究竟应该显示什么值?我应该从这个维度中提取什么?

from netCDF4 import Dataset
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

data = Dataset(r'SN1_PTPM.nc')

fig = plt.figure(figsize=(12,9))

lats = data.variables['Latitude'][:] #latitute column
lons = data.variables['Longitude'][:] #longitute column
avp = data.variables['Precipitation'][:] #precipitation column

mp = Basemap(projection = 'merc',
            llcrnrlon = 5.5,
            llcrnrlat = 8.5,
            urcrnrlon = -75,
            urcrnrlat = -72,
            resolution = 'i')

lon,lat = np.meshgrid(lons,lats)
x,y = mp(lon,lat)

c_scheme = mp.pcolor(x,y,avp[:], cmap = 'jet')
cbar = mp.colorbar(c_scheme, location = 'right', pad = '10%')

plt.show()

提前感谢您提供的任何信息。

我想问题是您的坐标是元组 (lat,lon),每个元组与一个值相关联。在那种情况下,您不能使用 meshgrid,因为它会创建一个坐标网格,但您在所有这些点上都没有值(您创建了一个二维网格,但只有一个一维值列表)