【问题标题】:Exporting netcdf file in MODIS sinusoidal grid with xarray使用 xarray 在 MODIS 正弦网格中导出 netcdf 文件
【发布时间】:2021-11-02 12:29:18
【问题描述】:

我在 MODIS 正弦网格中有 18 个 tif 文件,我想将其转换为 netcdf 格式的一个文件。我已将 tif 转换为名为 stacked 的 xarray xarray.core.dataset.Dataset 格式。此时,如果我的投影是 WGS 84,我通常可以像这样导出到 netcdf:

stacked.lat.attrs['long_name'] = 'latitude'
stacked.lat.attrs['units'] = 'degrees_north'
stacked.lat.attrs['standard_name'] = 'latitude'
   
stacked.long.attrs['long_name'] = 'longitude'
stacked.long.attrs['units'] = 'degrees_east'
stacked.long.attrs['standard_name'] = 'longitude'
   
    
stacked[variable].attrs['coordinates'] = 'time lat long'

但由于 MODIS 不是度数,这会导致问题。我试图将单位更改为'meters',但这不起作用。有没有办法使用 MODIS (https://spatialreference.org/ref/sr-org/modis-sinusoidal-3/) 而不是 WGS 84 导出到 netcdf?

【问题讨论】:

    标签: python-3.x python-xarray


    【解决方案1】:

    参考https://spatialreference.org/ref/sr-org/modis-sinusoidal-3/,我可以使用 proj4 标准定义crs。然后,我使用rioxarray 对数据集进行地理配准。假设您的尺寸坐标是yx,我会写:

    import rioxarray
    
    crs = "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"
    
    stacked = stacked.rio.set_spatial_dims(x_dim="x", y_dim="y").rio.write_grid_mapping().rio.write_crs(crs).rio.write_coordinate_system()
    

    创建了一个spatial_ref 坐标,现在您的坐标单位通常是正确的。

    如果它不完全符合您的问题,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      相关资源
      最近更新 更多