Фон
Я пытаюсь нарезать файл NetCDF, используя ограничивающую рамку в широтах / долях.Соответствующая информация об этом файле приведена ниже (переменные, форма, размеры):
Для большинства ответов здесь и в стандартных уроках это должно быть оченьЭто просто, и моя интерпретация заключается в том, что вы просто находите индексы широты / долготы и разрезаете массив переменных по этим индексам.
Попытка / Код
def netcdf_worker(nc_file, bbox):
dataset = Dataset(nc_file)
for variable in dataset.variables.keys():
if (variable != 'lat') and (variable != 'lon'):
var_name = variable
break
# Full extent of data
lats = dataset.variables['lat'][:]
lons = dataset.variables['lon'][:]
if bbox:
lat_bnds = [bbox[0], bbox[2]] # min lat, max lat
lon_bnds = [bbox[1], bbox[3]] # min lon, max lon
lat_inds = np.where((lats > lat_bnds[0]) & (lats < lat_bnds[1]))
lon_inds = np.where((lons > lon_bnds[0]) & (lons < lon_bnds[1]))
var_subset = dataset.variables[var_name][:, lat_inds[0], lon_inds[0]]
# would also be great to slice the lats and lons too for visualization
Проблема
При попытке реализовать решения, найденные в других ответах, перечисленных в SOс помощью приведенного выше кода я сталкиваюсь с ошибкой:
File "/Users/XXXXXX/Desktop/Viewer/viewer.py", line 41, in netcdf_worker
var_subset = dataset.variables[var_name][:, lat_inds[0], lon_inds[0]]
File "netCDF4/_netCDF4.pyx", line 4095, in netCDF4._netCDF4.Variable.__getitem__
File "/Users/XXXXXX/Viewer/lib/python3.6/site-packages/netCDF4/utils.py", line 242, in _StartCountStride
ea = np.where(ea < 0, ea + shape[i], ea)
IndexError: tuple index out of range
Я полагаю, что есть что-то незначительное, что я упускаю / не понимаю в разрезании многомерных массивов, и буду признателен за любую помощь.Я не заинтересован в каких-либо решениях, которые приносят какие-либо другие пакеты или работают вне Python (пожалуйста, никаких ответов на CDO или NCKS!).Спасибо за вашу помощь.