如何使用Xarray处理OCO-2 / Tropomi NETCDF4文件的时间变量?

问题描述

我正在处理Tropomi .nc文件。当我使用xarray打开数据集时,它不处理时间维度。在Tropomi文件中,时间维度称为“ sounding_dim”。返回的输出不是探测时间,而是输出探测值。

我也尝试过OCO-2 .nc文件。在OCO-2中,时间维度为“ sounding_id”。对于OCO-2,时间以浮点数而不是日期的形式返回。代码输出如下:

import numpy as np
import xarray as xr
from datetime import datetime as dt
import pandas as pd 

tropomi = xr.open_dataset('/Users/farhanmustafa/Documents/analysis/tropomi/ESACCI-GHG-L2-CH4-CO-TROPOMI-WFMD-20190102-fv1.nc',engine = 'netcdf4')
tropomi

返回的输出是:

<xarray.Dataset>
Dimensions:                 (corners_dim: 4,layer_dim: 20,level_dim: 21,sounding_dim: 374749)
Dimensions without coordinates: corners_dim,layer_dim,level_dim,sounding_dim
Data variables:
    time                    (sounding_dim) datetime64[ns] ...
    latitude                (sounding_dim) float32 ...
    longitude               (sounding_dim) float32 ...
    solar_zenith_angle      (sounding_dim) float32 ...
    sensor_zenith_angle     (sounding_dim) float32 ...
    azimuth_difference      (sounding_dim) float32 ...
    xch4                    (sounding_dim) float32 ...
    xch4_uncertainty        (sounding_dim) float32 ...
    xco                     (sounding_dim) float32 ...
    xco_uncertainty         (sounding_dim) float32 ...
    quality_flag            (sounding_dim) int32 ...
    pressure_levels         (sounding_dim,level_dim) float32 ...
    pressure_weight         (sounding_dim,layer_dim) float32 ...
    ch4_profile_apriori     (sounding_dim,layer_dim) float32 ...
    xch4_averaging_kernel   (sounding_dim,layer_dim) float32 ...
    co_profile_apriori      (sounding_dim,layer_dim) float32 ...
    xco_averaging_kernel    (sounding_dim,layer_dim) float32 ...
    orbit_number            (sounding_dim) int32 ...
    scanline                (sounding_dim) int32 ...
    ground_pixel            (sounding_dim) int32 ...
    latitude_corners        (sounding_dim,corners_dim) float32 ...
    longitude_corners       (sounding_dim,corners_dim) float32 ...
    altitude                (sounding_dim) float32 ...
    apparent_albedo         (sounding_dim) float32 ...
    land_fraction           (sounding_dim) int32 ...
    cloud_parameter         (sounding_dim) float32 ...
    h2o_column              (sounding_dim) float32 ...
    h2o_column_uncertainty  (sounding_dim) float32 ...
Attributes:
    title:                     TROPOMI/WFMD XCH4 and XCO
    institution:               University of Bremen
    source:                    TROPOMI L1B version 01.00.00
    history:                   2019 - product generated with WFMD
    tracking_id:               41f8bb71-4f43-4927-843a-4f02ed013f3b
    Conventions:               CF-1.6
    product_version:           v1.2
    summary:                   weighting Function Modified DOAS (WFMD) was ad...
    keywords:                  satellite,Sentinel-5 Precursor,TROPOMI,atmo...
    id:                        ESACCI-GHG-L2-CH4-CO-TROPOMI-WFMD-20190102-fv1.nc
    naming_authority:          iup.uni-bremen.de
    keywords_vocabulary:       NASA Global Change Master Directory (GCMD)
    cdm_data_type:             point
    comment:                   These data were produced at the University of ...
    date_created:              20200322T232210Z
    creator_name:              University of Bremen,IUP,Oliver Schneising
    creator_email:             schneising@iup.physik.uni-bremen.de
    project:                   climate Change Initiative - European Space Agency
    geospatial_lat_min:        -90
    geospatial_lat_max:        90
    geospatial_lat_units:      degree_north
    geospatial_lon_min:        -180
    geospatial_lon_max:        180
    geospatial_lon_units:      degree_east
    geospatial_vertical_min:   0
    geospatial_vertical_max:   100000
    time_coverage_start:       20190102T000000Z
    time_coverage_end:         20190102T235959Z
    time_coverage_duration:    P1D
    time_coverage_resolution:  P1D
    standard_name_vocabulary:  NetCDF climate and Forecast (CF) Metadata Conv...
    license:                   ESA CCI Data Policy: free and open access
    platform:                  Sentinel-5 Precursor
    sensor:                    TROPOMI
    spatial_resolution:        7km x 7km at nadir (typically)

当我尝试检索时间维度时:

tropomi.sounding_dim

<xarray.DataArray 'sounding_dim' (sounding_dim: 374749)>
array([     0,1,2,...,374746,374747,374748])
Dimensions without coordinates: sounding_dim

tropomi['sounding_dim'] = dt.strptime(tropomi["sounding_dim"],"%Y%m%d%H%M%s")

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-18-a749e221323c> in <module>
----> 1 tropomi['sounding_dim'] = dt.strptime(tropomi["sounding_dim"],"%Y%m%d%H%M%s")

TypeError: strptime() argument 1 must be str,not DataArray

我尝试了所有可以在互联网上找到的解决方案。如果有人帮助我进行整理,我将不胜感激。我想提到的是,我已经成功处理了GEOS-CHEM .nc文件,并且没有遇到任何此类错误

解决方法

您似乎拥有一个time类型的np.datetime64变量。您可以使用ds.swap_dims({"sounding_dim": "time"})来使time成为坐标变量。参见https://xarray.pydata.org/en/stable/generated/xarray.Dataset.swap_dims.html

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...