широта и долгота - это двумерные массивы в файле netcdf?

Я пытаюсь открыть, прочитать и построить данные облачного покрова из файла netCDF. Файл открывается и отображается в средстве просмотра Panoply, поэтому с данными все в порядке. Но я не могу понять на всю жизнь во мне, как преобразовать широту и долготу в одномерный массив каждый, они кажутся двухмерными. Что для меня имеет смысл в NaN ...

Чтение файла и переменных работает нормально:

fh = Dataset("/home/ubuntu/HIMA8_CC/Himawari8_AHI_FLDK_2020171_0140_00_CLOUD_MASK_EN.nc", mode='r')
lon = fh.variables['Longitude'][:]
lat = fh.variables['Latitude'][:]
cloud_mask = fh.variables['CloudMask'][:]

Однако размеры переменной широты и долготы являются 2D, я ожидал, что они будут 1D:

print(lon.shape)
print(lat.shape)
print(np.mean(lon))
print(cloud_mask.shape)
print(np.mean(lon))
print(np.mean(cloud_mask))

отпечатки

(5500, 5500)
(5500, 5500)
91.97970824333167
(5500, 5500)
91.97970824333167
1.8154066433116118

средние значения выглядят так, как ожидалось. Может ли кто-нибудь с опытом работы с netCDF пролить свет на то, что мне здесь не хватает?


person Balthasar    schedule 19.06.2020    source источник
comment
Не могли бы вы дать ссылку на файл? Вы можете изменить это с помощью NCO, но вам нужно сначала загрузить файл, чтобы увидеть, как   -  person Robert Wilson    schedule 19.06.2020
comment
Файл можно скачать здесь noaa-himawari8.s3.amazonaws.com/AHI-L2-FLDK-Clouds/2020/06/19/ Что такое NCO?   -  person Balthasar    schedule 20.06.2020
comment
Вам нужно будет преобразовать ваши массивы в 1D. Каждый элемент двумерных массивов представляет собой одну точку в пространстве. [I, j] в lon и lat дают вам долготу и широту в cloud_mask. Вы также можете использовать lon.mask для удаления любых замаскированных данных.   -  person Robert Wilson    schedule 20.06.2020


Ответы (1)


Вы можете попробовать это.

import xarray as xr

fh = xr.open_dataset('/home/ubuntu/HIMA8_CC/Himawari8_AHI_FLDK_2020171_0140_00_CLOUD_MASK_EN.nc')

lon = fh['Longitude'].values.flatten()
lat = fh['Latitude'].values.flatten()
person Dani56    schedule 20.06.2020