Python netCDF5 работает с долготой и широтой и извлекает данные - PullRequest
0 голосов
/ 16 июня 2020

как ваши дела?

Я работаю над этим уже довольно давно, но я не могу продолжить. Мне дали .n c Файлы с высотой в облаках (CBA - это измерения, указывающие высоту комков в определенной области).

На данный момент я даже не могу извлечь данные для одной координаты. Эти данные содержат область, показанную на этом рисунке, от верхнего левого угла до нижнего правого:

Area contained in Data

Вот скриншот данных, с которыми я работаю с:

enter image description here

Извините, что я не могу предоставить больше данных, чем это, но я не хочу иметь проблемы.

Значение cba - это информация, которую я хочу извлечь. Итак, допустим, у меня есть набор координат (долгота / широта) интересующей меня области, как я могу получить соответствующие значения cba?

Мне не нужна спецификация c решение, но направление, в котором я могу продолжить работу самостоятельно.

Для получения дополнительной информации вот как выглядят значения .cba и .cba.:

enter image description here

Я работал с подобными данными раньше, но не с этими вложенными, поэтому я абсолютно не знаю, как я могу подойти к этому. Есть ли в python модуль / пакет, который позволил бы мне легко справиться с этим, поэтому, когда я ввожу координаты для области, он напрямую даст мне соответствующие значения cba?

Надеюсь, этого достаточно информацию на go, и вы можете мне помочь, я был бы очень признателен.

С уважением

1 Ответ

2 голосов
/ 16 июня 2020

Используемый вами пакет (xarray) уже идеально подходит для этой задачи.

dObj - это объект xarray.Dataset, каждая содержащаяся переменная (например, dObj['cba']) является xarray.DataArray объект.

Вы можете получить доступ к данным в заданном наборе координат следующим образом:

lat = ...
lon = ...
dObj['cbd'].sel(y=lat, x=lon, method='nearest')

method='nearest' требуется, поскольку ваш массив координат вряд ли будет содержать запрошенную плавающую точку значения точно .

Если вместо этого вы хотите выбрать диапазон широты и долготы, вы можете сделать это следующим образом:

lat_min, lat_max = (...)
lon_min, lon_max = (...)
dObj['cbd'].sel(y=slice(lat_min, lat_max), x=slice(lon_min, lon_max))

Для получения дополнительной информации о имея дело с xarray объектами, ознакомьтесь с исчерпывающей документацией: http://xarray.pydata.org/en/stable/index.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...