python 如何将nc文件中的经度从从0-360更改为-180到180,并按照坐标排序

首先要使用xarray读取nc文件

import xarray as xr
path='your_filename.nc'
ds=xr.open_dataset(path)

接着进行以下操作,选择经度中大于360°的数据减去360,生成布尔索引。将新坐标重新分配为主要 lon 坐标,并使用新的坐标值对 DataArray 进行排序,最后修改lon名称。

lon_name = 'longitude'  #你的nc文件中经度的命名
ds['longitude_adjusted'] = xr.where(
    ds[lon_name] > 180,
    ds[lon_name] - 360,
    ds[lon_name])
ds = (
    ds
    .swap_dims({lon_name: 'longitude_adjusted'})
    .sel(**{'longitude_adjusted': sorted(ds.longitude_adjusted)})
    .drop(lon_name))
ds = ds.rename({'longitude_adjusted': lon_name})

如果想反过来,从-180到180改为0-360,同理操作可得:

     lon_name = 'lon'  # whatever name is in the data
     ds['longitude_adjusted'] = xr.where(ds[lon_name] < 0, ds[lon_name]%360,\
                           ds[lon_name])
     ds = (
        ds
        .swap_dims({lon_name: 'longitude_adjusted'})
        .sel(**{'longitude_adjusted': sorted(ds.longitude_adjusted)})
        .drop(lon_name))
     ds = ds.rename({'longitude_adjusted': lon_name})

xarray.Dataset.swap_dims使用方法可见官网:
xarray.Dataset.swap_dims

你可能感兴趣的:(python-海洋数据处理,如何解决系列,python)