Использование python-xarray для извлечения одной переменной из многомерного файла netcdf с сохранением атрибутов / метаданных - PullRequest
1 голос
/ 06 ноября 2019

У меня большой файл netcdf со многими измерениями и атрибутами. Я хочу извлечь одну переменную из этого файла и сохранить ее как новый файл netcdf, сохраняя при этом все исходные метаданные. Я использую xarray.

Я открываю набор данных с помощью:

dr=xr.open_dataset("path_to_file")

И это выглядит, когда я print это (некоторые измерения и метаданные удалены для простоты:

<xarray.Dataset>
Dimensions:                (Time: 464, bottom_top: 39, bottom_top_stag: 40, snow_layers_stag: 3, snso_layers_stag: 7, soil_layers_stag: 4, south_north: 186, south_north_stag: 187, west_east: 246, west_east_stag: 247)
Coordinates:
    XLAT                   (Time, south_north, west_east) float32 ...
    XLONG                  (Time, south_north, west_east) float32 ...
    XTIME                  (Time) datetime64[ns] ...
    XLAT_U                 (Time, south_north, west_east_stag) float32 ...
    XLONG_U                (Time, south_north, west_east_stag) float32 ...
    XLAT_V                 (Time, south_north_stag, west_east) float32 ...
    XLONG_V                (Time, south_north_stag, west_east) float32 ...
Dimensions without coordinates: Time, bottom_top, bottom_top_stag, snow_layers_stag, snso_layers_stag, soil_layers_stag, south_north, south_north_stag, west_east, west_east_stag
Data variables:
    Times                  (Time) |S19 ...
    UST                    (Time, south_north, west_east) float32 ...
    ZNU                    (Time, bottom_top) float32 ...
    ZNW                    (Time, bottom_top_stag) float32 ...
    ZS                     (Time, soil_layers_stag) float32 ...
    DZS                    (Time, soil_layers_stag) float32 ...

Attributes:
    TITLE:                            OUTPUT FROM WRF V3.9 MODEL
    START_DATE:                      2017-10-31_00:00:00
    SIMULATION_START_DATE:           2017-10-01_00:00:00
    WEST-EAST_GRID_DIMENSION:        247
    SOUTH-NORTH_GRID_DIMENSION:      187
    BOTTOM-TOP_GRID_DIMENSION:       40

    HYBRID_OPT:                      -1
    ETAC:                            0.0

Я хочу извлечь только UST, поэтому я пытаюсь:

dr_u = dr['UST']

Но когда я print получаю dr_u, метаданные исчезают:

<xarray.Dataset>
Dimensions:  (Time: 464, south_north: 186, west_east: 246)
Coordinates:
    XLAT     (Time, south_north, west_east) float32 ...
    XLONG    (Time, south_north, west_east) float32 ...
    XTIME    (Time) datetime64[ns] ...
Dimensions without coordinates: Time, south_north, west_east
Data variables:
    UST      (Time, south_north, west_east) float32 ...

Я хочу иметь возможность хранить всю информацию под заголовком Attributes в исходном файле. Я знаю, что в пакете xarray есть флаг keep_attrs, который выглядит так, как если быбыть полезным для этого, но я не могу понять, как использовать его в этой операции.

1 Ответ

0 голосов
/ 06 ноября 2019

Вы можете извлечь словарь атрибутов из объекта xarray, используя ds.attrs

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

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